Angular 4 - 静态解析符号值时遇到错误
Angular 4 - Error encountered resolving symbol values statically
我的一个功能模块包含以下内容:
declare function require(name: string);
@NgModule({
imports: [
// other modules here
ChartModule.forRoot(
require('highcharts'),
require('highcharts/highcharts-more'),
require('highcharts/modules/funnel'),
require('highcharts/modules/heatmap')
)
它在本地运行良好,但当我使用 prod 标志构建它时,它失败了。我得到的错误是:
ERROR in Error encountered resolving symbol values statically. Reference to a non-exported function (position 26
:18 in the original .ts file), resolving symbol ....
ERROR in ./src/main.ts
Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory' in ...
知道如何解决这个问题吗?
我无法为您指出确切的行,因为您没有包含完整的 @NgModule
装饰器。这个错误通常在 providers
数组中,当你有这样的东西时:
@NgModule({
// imports, exports and declarations
providers: [{
provide: XSRFStrategy,
useValue: new CookieXSRFStrategy('RESPONSE_TOKEN', 'RESPONSE_TOKEN')
}]
})
export class MyModule {}
当你有这样的内联函数调用时,你不能使用 AOT。因此,将 useValue
替换为 useFactory
和导出函数(如错误消息中所述)。
这是我的第一个清单的 AOT 安全版本:
export function xsrfFactory() {
return new CookieXSRFStrategy('XSRF-TOKEN', 'X-XSRF-TOKEN');
}
@NgModule({
// imports, exports and declarations
providers: [{
provide: XSRFStrategy,
useFactory: xsrfFactory
}]
})
export class MyModule {}
我的一个功能模块包含以下内容:
declare function require(name: string);
@NgModule({
imports: [
// other modules here
ChartModule.forRoot(
require('highcharts'),
require('highcharts/highcharts-more'),
require('highcharts/modules/funnel'),
require('highcharts/modules/heatmap')
)
它在本地运行良好,但当我使用 prod 标志构建它时,它失败了。我得到的错误是:
ERROR in Error encountered resolving symbol values statically. Reference to a non-exported function (position 26 :18 in the original .ts file), resolving symbol ....
ERROR in ./src/main.ts Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory' in ...
知道如何解决这个问题吗?
我无法为您指出确切的行,因为您没有包含完整的 @NgModule
装饰器。这个错误通常在 providers
数组中,当你有这样的东西时:
@NgModule({
// imports, exports and declarations
providers: [{
provide: XSRFStrategy,
useValue: new CookieXSRFStrategy('RESPONSE_TOKEN', 'RESPONSE_TOKEN')
}]
})
export class MyModule {}
当你有这样的内联函数调用时,你不能使用 AOT。因此,将 useValue
替换为 useFactory
和导出函数(如错误消息中所述)。
这是我的第一个清单的 AOT 安全版本:
export function xsrfFactory() {
return new CookieXSRFStrategy('XSRF-TOKEN', 'X-XSRF-TOKEN');
}
@NgModule({
// imports, exports and declarations
providers: [{
provide: XSRFStrategy,
useFactory: xsrfFactory
}]
})
export class MyModule {}