Aot 和缩小在 Angular 4 中使用外部模块失败
Aot and minification failing in Angular 4 with external modules
我正在使用 Angular CLI 构建一个 Angular 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
Datepicker 模块抱怨它是一个外部模块 (https://www.npmjs.com/package/angular-io-datepicker)。
有人可以提出可能存在的问题吗?我该如何解决?
根据这里:
https://github.com/qdouble/angular-webpack2-starter#aot--donts
这里:
https://github.com/rangle/angular-2-aot-sandbox#func-in-providers-top
Angular 无法静态分析的事物类型之一是在 providers
中调用的函数。
正在查看您拥有的图书馆:
https://github.com/rd-dev-ukraine/angular-io-datepicker/blob/master/src/datepicker/datePicker.d.ts
Component
providers
似乎有这一行
providers: [ControlValueAccessorProviderFactory(DatePicker)
ControlValueAccessorProviderFactory
来自这里:
https://github.com/rd-dev-ukraine/angular-io-datepicker/blob/master/src/datepicker/common.ts
在这种情况下,我们看到我们正在导出一个在 providers
数组中直接调用的函数。
所以我认为这是导致静态分析问题的原因,导致您的构建失败。我认为图书馆必须改变他们处理程序的方式才能编译。
@angular/cli
存在错误
前段时间修复了,但解决方法是在 npm install 之后安装
npm i enhanced-resolve@3.3.0
我正在使用 Angular CLI 构建一个 Angular 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
Datepicker 模块抱怨它是一个外部模块 (https://www.npmjs.com/package/angular-io-datepicker)。
有人可以提出可能存在的问题吗?我该如何解决?
根据这里:
https://github.com/qdouble/angular-webpack2-starter#aot--donts
这里:
https://github.com/rangle/angular-2-aot-sandbox#func-in-providers-top
Angular 无法静态分析的事物类型之一是在 providers
中调用的函数。
正在查看您拥有的图书馆:
https://github.com/rd-dev-ukraine/angular-io-datepicker/blob/master/src/datepicker/datePicker.d.ts
Component
providers
providers: [ControlValueAccessorProviderFactory(DatePicker)
ControlValueAccessorProviderFactory
来自这里:
https://github.com/rd-dev-ukraine/angular-io-datepicker/blob/master/src/datepicker/common.ts
在这种情况下,我们看到我们正在导出一个在 providers
数组中直接调用的函数。
所以我认为这是导致静态分析问题的原因,导致您的构建失败。我认为图书馆必须改变他们处理程序的方式才能编译。
@angular/cli
存在错误前段时间修复了,但解决方法是在 npm install 之后安装
npm i enhanced-resolve@3.3.0