Angular 2 RC6:cli 编译器说 "function calls are not supported"

Angular 2 RC6: cli-compiler says "function calls are not supported"

尝试使用以下命令编译我的 RC6 应用程序时:

ngc -p C:\Path\To\Project

(当我运行命令时我被放在C:\Path\To\Project\node_modules\.bin里面)

我收到以下错误:

Error encountered resolving symbol values statically. Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function (position 20:25 in the original .ts file), resolving symbol CoreModule in C:/Path/To/Project/app/modules/core/core.module.ts

这是它抱怨的内容:

@NgModule({
imports: [
    CommonModule,
    TranslateModule.forRoot({ 
        provide: TranslateLoader,
        useFactory: (http: Http) => new TranslateStaticLoader(http, 'app/languages', '.json'),
        deps: [Http]
    })
],

如果我删除 TranslateModule.forRoot...,错误就会消失。

如何按照错误提示用导出函数替换它?

我很幸运:

export function translateStaticLoaderFactory(http: Http) {
  return new TranslateStaticLoader(http, 'app/languages', '.json');
}

@NgModule({
imports: [
    CommonModule,
    TranslateModule.forRoot({ 
        provide: TranslateLoader,
        useFactory: translateStaticLoaderFactory,
        deps: [Http]
    })
],

您必须首先将 ng2-translate 更新到 >5.0.0。 我在版本 ~2.5.0 上遇到了同样的问题,导出的函数没有帮助。

所以你的步骤:

  1. 更新版本>5.0.0
  2. Isaac 提到的导出函数:

export function translateStaticLoaderFactory(http: Http) { return new TranslateStaticLoader(http, 'app/languages', '.json'); }

@NgModule({ imports: [ CommonModule, TranslateModule.forRoot({ provide: TranslateLoader, useFactory: translateStaticLoaderFactory, deps: [Http] }) ],