2017-07-30 56 views
4

我正在使用Angular CLI構建Angular 4應用程序。在部署之前,我想做一個小型化。所以,我執行以下命令使用外部模塊的角度4中的Aot和縮小失敗

ng build --environment=prod --prod --base-href /myapp/ 

這給了我下面的錯誤

ERROR in Error encountered resolving symbol values statically. Calling function 'ControlValueAccessorProviderFactory', function calls are not supported. Consi 
der replacing the function or lambda with a reference to an exported function, resolving symbol DatePicker in D:/myapp/node_modules/angular-i 
o-datepicker/src/datepicker/datePicker.d.ts, resolving symbol DatePicker in D:/myapp/node_modules/angular-io-datepicker/src/datepicker/datePi 
cker.d.ts 

ERROR in ./src/main.ts 
Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory' in 'D:\myapp\src' 
@ ./src/main.ts 4:0-74 
@ multi ./src/main.ts 

日期選擇器模塊,它是在抱怨外部模塊(https://www.npmjs.com/package/angular-io-datepicker)。

有人可以請建議什麼可能是錯誤的,我怎麼能解決它?

+0

它確實爲很多人甚至對我來說。我的構建過程因1.2.1而失敗。我回到了舊版本,它做了魔術。這是一個角度github問題請求。 – Gary

+0

你的意思是angular-io-datepicker的1.2.1嗎?我目前在angular-io-datepicker的1.3.1上。你最終使用哪個版本解決了問題? – kayasa

+0

沒有。我在談論ng-cli。 ext庫在編譯時解析 – Gary

回答

2

根據這一位置:

https://github.com/qdouble/angular-webpack2-starter#aot--donts

這裏:

https://github.com/rangle/angular-2-aot-sandbox#func-in-providers-top

其中一個類型的東西,角度不能靜態分析的是被稱爲providers功能。

縱觀庫您有:

https://github.com/rd-dev-ukraine/angular-io-datepicker/blob/master/src/datepicker/datePicker.d.ts

它看起來像有這條線在這裏爲Componentproviders

providers: [ControlValueAccessorProviderFactory(DatePicker) 

ControlValueAccessorProviderFactory來自這裏:

https://github.com/rd-dev-ukraine/angular-io-datepicker/blob/master/src/datepicker/common.ts

在這種情況下,我們看到我們正在導出直接在providers陣列中調用的函數。

所以我認爲這是造成靜態分析的問題,導致你的構建失敗。我認爲圖書館將不得不改變他們如何處理你的程序進行編譯。