Uno de mis módulos de características tiene este contenido:
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') )Funciona bien localmente, pero cuando lo construyo con el indicador prod, falla. El error que me sale es:
ERROR en Se encontró un error al resolver los valores de los símbolos de forma estática. Referencia a una función no exportada (posición 26 :18 en el archivo .ts original), símbolo de resolución ....
ERROR en ./src/main.ts Módulo no encontrado: Error: No se puede resolver './$$_gendir/app/app.module.ngfactory' en...
¿Alguna idea sobre cómo resolver esto?
No puedo indicarle la línea exacta, porque no incluyó el decorador completo de @NgModule . Esta falla normalmente está en la matriz de providers , cuando tiene algo como esto:
@NgModule({ // imports, exports and declarations providers: [{ provide: XSRFStrategy, useValue: new CookieXSRFStrategy('RESPONSE_TOKEN', 'RESPONSE_TOKEN') }] }) export class MyModule {} No puede usar AOT cuando tiene una llamada de función en línea como esa. Entonces, en su lugar, reemplace useValue con useFactory y una función exportada (como se indica en su mensaje de error).
Aquí está la versión segura de AOT de mi primer listado:
export function xsrfFactory() { return new CookieXSRFStrategy('XSRF-TOKEN', 'X-XSRF-TOKEN'); } @NgModule({ // imports, exports and declarations providers: [{ provide: XSRFStrategy, useFactory: xsrfFactory }] }) export class MyModule {}