不支持函数调用。考虑用对导出函数的引用替换函数或 lambda

2024-05-10

我在我的应用程序中使用 APP_INITIALIZER ,并在 app.module.ts 中将其设置如下,并进行必要的导入:

@NgModule({
  ...
  providers: [ ..., ContextService, { provide: APP_INITIALIZER, useFactory: (context: ContextService) => () => context.load(), deps: [ContextService], multi: true } ],
  ...
})

当我构建新的(ng build -watch)时,出现以下错误,后续构建工作正常.

静态解析符号值时遇到错误中的错误。 不支持函数调用。考虑替换该功能或 带有对导出函数的引用的 lambda(位置 24:46 原始 .ts 文件),解析 C:/.../app.module.ts 中的符号 AppModule

我尝试过移动() => context.load()到同一文件中的导出函数中,如下所示:

export function loadContext(context: ContextService) {
    return () => context.load();
}

...然后更改 @NgModule 的提供者部分:

@NgModule({
      ...
      providers: [ ..., ContextService, { provide: APP_INITIALIZER, useFactory: (context: ContextService) => loadContext(context), deps: [ContextService], multi: true } ],
      ...
    })

构建最初仍然失败,如上面所示,并出现相同的错误。后续构建工作正常。

如何解决这个初始构建错误?


将内联闭包移至函数:

function loadContext(context: ContextService) {
  return () => context.load();
}

@NgModule({
  ...
  providers: [ ..., ContextService, { provide: APP_INITIALIZER, useFactory: loadContext, deps: [ContextService], multi: true } ],
  ...
})

也可以看看如何将从后端渲染的参数传递给 angular2 bootstrap 方法 https://stackoverflow.com/questions/37611549/how-to-pass-parameters-rendered-from-backend-to-angular2-bootstrap-method/37611614?noredirect=1#comment73084432_37611614

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不支持函数调用。考虑用对导出函数的引用替换函数或 lambda 的相关文章

随机推荐