快速分解:
•将我的Angular 5应用程序升级到Angular 6.•安装rxjs 6&rxjs-compat 6•使用Webpack构建 . •Dev build工作正常 . • 生产环境 构建产生以下错误:
ERROR在块应用[条目] bundle.js /Users/Usr_Mac/Desktop/Angular/node_modules/@angular/core/fesm5/core.js RuntimeTemplate.moduleId():模块/用户/ Usr_Mac /桌面/角/ node_modules / rxjs / _esm5 / internal / Observable.js没有id . 这不应该发生 .
3 回答
这是一个webpack错误 - 我在webpack 4.10.1中遇到了这个问题 . 升级到4.10.2修复了它 .
https://github.com/webpack/webpack/issues/7443
好像rxjs bug . 尝试在没有AoT的情况下进行prod构建,看看它是否有帮助:
总的来说,我不需要花很多时间 . 我在这里写了博客:https://yakovfain.com/2018/05/16/how-i-migrated-a-dozen-of-projects-to-angular-6/
出于某种原因,如果我在rxjs模块中更改了一行代码(文件
node_modules/rxjs/package.json
),它只能工作(在我的情况下) .变
至
随着这种变化,AOT构建也在发挥作用 . 我不知道为什么这个更改是必要的,因为rxjs的模块加载应该没有副作用,至少sideEffects / webpack github问题是关闭的,我没有发现有关此设置的任何(开放)问题 .
也许这是组合角度AOT webpack rxjs的问题?!
Workaround/Solution
作为一种解决方法 - 只要没有更好的解决方案来解决这个问题 - 你可以在package.json中添加这样的东西:
这将取代rxjs模块的有问题的sideEffects配置 .