“TypeError:提供者.在AOT构建的Angular2中,forEach不是一个函数



我搜索了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:myprojnode_modules@angularcompilerbundlescompiler.umd.js:14292:21)
  at CompileMetadataResolver.getNgModuleMetadata (D:myprojnode_modules@angularcompilerbundlescompiler.umd.js:14051:60)
  at D:myprojnode_modules@angularcompilerbundlescompiler.umd.js:12801:47
  at Array.forEach (native)
  at analyzeModules (D:myprojnode_modules@angularcompilerbundlescompiler.umd.js:12800:17)
  at OfflineCompiler.analyzeModules (D:myprojnode_modules@angularcompilerbundlescompiler.umd.js:12826:18)
  at CodeGenerator.codegen (D:myprojnode_modules@angularcompiler-clisrccodegen.js:122:47)
  at codegen (D:myprojnode_modules@angularcompiler-clisrcmain.js:7:81)
  at Object.main (D:myprojnode_modules@angulartsc-wrappedsrcmain.js:30:16)
  at Object.<anonymous> (D:myprojnode_modules@angularcompiler-clisrcmain.js:14:9)

我尝试在node_modulesng2-bootstrapcomponents内摆弄本地副本,分别在xxx.module.jsxxx.module.metadata.js中添加providers: [],但没有运气。但我不确定这是否构成任何证据。

有人尝试过AOT和最近的ng2引导版本吗?

在把控制台日志添加到@angular compiler.umd.js之后,问题就出来了——我想说清楚——这是与ng2-bootstrap完全无关的

最近更改后,定义主应用程序模块的代码如下:

import { appProviders } from '../app/providers';
// ...
@NgModule({
  providers: [appProviders],
  // ...

:

import { appProviders as providers } from '../app/providers';
// ...
@NgModule({
  providers,
  // ...

基本上是传递一个数组(错误),而不是数组的数组(正确)。

错误消息似乎对获得根本原因的良好上下文没有太大帮助,所以我把这个线程留在这里,以防它可能有帮助。

最新更新