angular - 具有外部模块的 Angular 4 中的 Aot 和缩小失败

标签 angular angular-cli angular2-aot

我正在使用 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 - 具有外部模块的 Angular 4 中的 Aot 和缩小失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45397481/

相关文章:

Angular 2 错误 'Illegal constructor'

javascript - Angular4 提示 HTML 中的中心元素是未定义的函数

angular-cli - 如何在启用生产build设置和 AOT 的情况下运行 angular cli ng 测试

javascript - 类具有或正在使用外部模块中的名称 'SafeUrl' 但无法命名

angular - ERROR in Error during template compile of 'AppModule'

html - 无法打印整个 div,包括(X 符号开头的一些删除按钮和同一行中的文件名等)

javascript - 在 ionic2 中刷新页面

css - 有什么方法可以告诉 angular-cli(对于 angular 2)生成缩小版的 css 吗?

angular - 使用 PhantomJS 和 Angular CLI 进行端到端测试

angular - 尝试使用 angular-cli 和 webpack 延迟加载功能模块时出错