`TypeError:providers.forEach不是AOT构建中Angular2的函数`

时间:2016-10-17 22:09:20

标签: angular

我搜索了ng2-bootstrap Github项目的现有问题,但找不到类似的东西。同样在这里。

我正在使用Angular 2( 2.1.0 ),TypeScript 2( 2.0.3 ),Webpack 2( 2.1.0 -beta.25 )申请。构建链既有开发构建,也有生产过程,有AOT和uglifyjs。应用程序取决于ng2-bootstrap TabsModuleDropdownModule 1.1.14 )。

开发构建顺利。使用AOT构建时,失败的是:

TypeError: providers.forEach is not a function
  at CompileMetadataResolver.getProvidersMetadata (D:\myproj\node_modules\@angular\compiler\bundles\compiler.umd.js:14292:21)
  at CompileMetadataResolver.getNgModuleMetadata (D:\myproj\node_modules\@angular\compiler\bundles\compiler.umd.js:14051:60)
  at D:\myproj\node_modules\@angular\compiler\bundles\compiler.umd.js:12801:47
  at Array.forEach (native)
  at analyzeModules (D:\myproj\node_modules\@angular\compiler\bundles\compiler.umd.js:12800:17)
  at OfflineCompiler.analyzeModules (D:\myproj\node_modules\@angular\compiler\bundles\compiler.umd.js:12826:18)
  at CodeGenerator.codegen (D:\myproj\node_modules\@angular\compiler-cli\src\codegen.js:122:47)
  at codegen (D:\myproj\node_modules\@angular\compiler-cli\src\main.js:7:81)
  at Object.main (D:\myproj\node_modules\@angular\tsc-wrapped\src\main.js:30:16)
  at Object.<anonymous> (D:\myproj\node_modules\@angular\compiler-cli\src\main.js:14:9)

我尝试在node_modules\ng2-bootstrap\components内摆弄本地副本,在providers: []xxx.module.js分别添加xxx.module.metadata.js,但没有运气。不确定这是否构成任何证明。

有没有人尝试使用AOT和最近的ng2-bootstrap版本?

1 个答案:

答案 0 :(得分:0)

将控制台日志添加到@angular compiler.umd.js后,问题出现了 - 我想说清楚 - 它与完全无关到ng2-bootstrap。

最近的更改后,代码定义的主应用程序模块发生了变化:

import { appProviders } from '../app/providers';
// ...

@NgModule({
  providers: [appProviders],
  // ...

到此:

import { appProviders as providers } from '../app/providers';
// ...

@NgModule({
  providers,
  // ...

基本上传递数组(错误)而不是数组数组(右)。

错误消息对于获得根本原因的良好上下文似乎没那么有用,因此我将此线程保留在此处,以防它可能有用。