Angular 6 | Webpack生成构建错误

时间:2018-05-29 10:02:59

标签: angular webpack rxjs angular6 tsconfig

快速分解:

•将我的Angular 5应用程序升级到Angular 6。 •已安装的rxjs 6& rxjs-compat 6 •使用Webpack构建。 •Dev build工作正常。 •生产构建产生以下错误:

  

块应用[entry] bundle.js中的错误   /Users/Usr_Mac/Desktop/Angular/node_modules/@angular/core/fesm5/core.js   RuntimeTemplate.moduleId():模块   /Users/Usr_Mac/Desktop/Angular/node_modules/rxjs/_esm5/internal/Observable.js没有ID。这不应该发生。

3 个答案:

答案 0 :(得分:1)

这是一个webpack错误 - 我在webpack 4.10.1上遇到过这个问题。升级到4.10.2修复了它。

https://github.com/webpack/webpack/issues/7443

答案 1 :(得分:0)

好像是rxjs bug。尝试在没有AoT的情况下进行prod构建,看看它是否有帮助:

ng build --prod --aot false

一般情况下,我不使用rxjs-compat。从Angular 5到Angular 6进行全面升级并不需要花费太多时间。我在这里写博客: https://yakovfain.com/2018/05/16/how-i-migrated-a-dozen-of-projects-to-angular-6/

答案 2 :(得分:0)

出于某种原因,如果我在rxjs模块中更改了一行代码(文件node_modules/rxjs/package.json),它只能起作用(在我的情况下)。

更改

"sideEffects": false,

"sideEffects": true,

随着这一变化,AOT构建也在发挥作用。我不知道为什么这个改变是必要的,因为rxjs的模块加载应该没有副作用,至少sideEffects / webpack github问题是关闭的,我没有发现任何(开放)问题设置。

组合angular + AOT + webpack + rxjs时,这可能是一个问题?!

解决方法/解决方案

作为一种解决方法 - 只要没有更好的解决方案来解决这个问题 - 你可以在package.json中添加这样的东西:

"scripts": {
  "postinstall": "sed -i -e 's/\"sideEffects\": false,/\"sideEffects\": true,/g' node_modules/rxjs/package.json"
},

这将取代rxjs模块的有问题的sideEffects配置。