簡體   English   中英

Angular 6 | Webpack生成構建錯誤

[英]Angular 6 | Webpack Production Build Error

快速分解:

•將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():Module / Users / Usr_Mac / Desktop / Angular / node_modules / rxjs /_esm5/internal/Observable.js沒有id。 這不應該發生。

這是一個webpack錯誤 - 我在webpack 4.10.1中遇到了這個問題。 升級到4.10.2修復它。

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

好像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/

出於某種原因,如果我在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配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM