默认节点包版本集无法构建,但修改后的版本有效

Default node package version set fail to build but a modified one works

GitHub Issue
此问题与较新版本的 ts-loader 抛出错误有关,当您将 tsloader 从版本“^4.0.1”降级为“^3.5.0”

时全部修复

我正在使用 backpack+typescript 编写一个测试项目,并使用以下命令安装节点包:

npm install -D jshint ts-loader typescript backpack-core copy-webpack-plugin nodemon  
npm install -S asciify  

什么,经过一些修改,结果如下package.json:

{
  "name": "myTestProject",
  "version": "0.0.1",
  "description": "learn",
  "private": true,
  "scripts": {
    "start": "node ./prd/main.js",
    "dev": "backpack dev",  
    "build": "backpack build"
  },
  "license": "MIT",
  "devDependencies": {
    "backpack-core": "^0.7.0",
    "copy-webpack-plugin": "^4.5.1",
    "jshint": "^2.9.5",
    "nodemon": "^1.17.2",
    "ts-loader": "^4.0.1",
    "typescript": "^2.7.2"
  },
  "dependencies": {
    "asciify": "^1.3.5"
  }
}

但是当使用 npm run build 构建时我收到错误:

> myTestProject@0.0.1 build /home/myUser/myProjectFolder/myTestProject
> backpack build

 ERROR  Failed to compile with 1 errors00:34:00

 error  in ./src/main.ts

Module build failed: TypeError: Cannot read property 'afterCompile' of undefined
    at successfulTypeScriptInstance (/home/myUser/myProjectFolder/myTestProject/node_modules/ts-loader/dist/instances.js:147:28)
    at Object.getTypeScriptInstance (/home/myUser/myProjectFolder/myTestProject/node_modules/ts-loader/dist/instances.js:48:12)
    at Object.loader (/home/myUser/myProjectFolder/myTestProject/node_modules/ts-loader/dist/index.js:16:41)

 @ multi ./src/main.ts


npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! myTestProject@0.0.1 build: `backpack build`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the myTestProject@0.0.1 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/myUser/.npm/_logs/2018-01-01T01_01_01_010Z-debug.log

为了解决这个问题,我需要重新安装删除 node_modules 文件夹并替换 package.json:

{
  "name": "myTestProject",
  "version": "0.0.1",
  "description": "learn",
  "private": true,
  "scripts": {
    "start": "node ./prd/main.js",
    "dev": "backpack dev",
    "build": "backpack build"
  },
  "license": "MIT",
  "devDependencies": {
    "backpack-core": "^0.5.0",
    "copy-webpack-plugin": "^4.5.0",
    "jshint": "^2.9.5",
    "ts-loader": "^3.5.0",
    "typescript": "^2.7.2"
  },
  "dependencies": {
    "@types/asciify": "^1.3.29",
    "asciify": "^1.3.5"
  }
}

添加nodemon包尝试解决,但没有效果。 我的问题是,我经过大量工作后找到了这个工作包版本集,但它可能发生在其他情况下,我没有那么多时间来修复,甚至可以完全了解这里发生的事情。
npm list 输出几个问题。 任何人都可以解释为什么会发生这种情况,如果有某种方法可以避免此类问题,我无法猜测每次我键入 npm install 命令时每个包上的工作版本。

ts-loader 4.0 具有与 webpack 重大变更一致的重大变更。我怀疑你碰到了那个。我建议您在工作流程中使用 3.5。