2017-04-11 57 views
5

Jeden z moich modułów funkcji ma taką zawartość:kątowe 4 - Wystąpił błąd rozwiązywanie wartości symboli statycznie

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') 
) 

działa poprawnie lokalnie, ale gdy budować go z flagą prod zawiedzie. Otrzymuję błąd:

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 ...

Każdy pomysł, jak rozwiązać ten problem?

+1

mam podobny problem, ale z 'const' eksportu – KarolDepka

Odpowiedz

1

Nie mogę wskazać dokładnej linii, ponieważ nie dodano pełnego dekoratora @NgModule. Ten błąd jest zazwyczaj w tablicy providers, kiedy masz coś takiego:

@NgModule({ 
// imports, exports and declarations 
    providers: [{ 
    provide: XSRFStrategy, 
    useValue: new CookieXSRFStrategy('RESPONSE_TOKEN', 'RESPONSE_TOKEN') 
    }] 
}) 
export class MyModule {} 

Nie można używać AOT gdy masz wywołanie funkcji inline takiego. Zamiast tego zamień useValue na useFactory i wyeksportowaną funkcję (jak podano w komunikacie o błędzie).

Oto wersja AOT-safe mojego pierwszego notowania:

export function xsrfFactory() { 
    return new CookieXSRFStrategy('XSRF-TOKEN', 'X-XSRF-TOKEN'); 
} 
@NgModule({ 
// imports, exports and declarations 
    providers: [{ 
    provide: XSRFStrategy, 
    useFactory: xsrfFactory 
    }] 
}) 
export class MyModule {}