2017-12-31 39 views
7

Ich versuche, App mit -aot Option zu erstellen (ng build -aot). Ich habe die folgende Fehlermeldung anzeigt:Funktionsaufrufe werden im Dekorator nicht unterstützt

ERROR in Error during template compile of 'MyComponent' 
    Function calls are not supported in decorators but 'classLogger' was called in 'cLog' 
    'cLog' calls 'classLogger'. 

aber ich brauche diese Anrufe und ich nicht eine Idee, wie soll ich den Code ändern, damit es funktioniert.

export function classLogger(_classOptions?) { 
    const myLogger = new MyLogger(); 
    myLogger.options = Object.assign({}, defaultClassOptions, _classOptions); 

    return myLogger.loggerCB; 
} 

// export function clog(options = defaultClassOptions): Function { 
export function cLog(options?): Function { 
    return loggingEnabled ? classLogger(options) : emptyClassDecorator(); 
} 

P. S. Der Klassen-Dekorator nimmt Optionen an, die zum Callback des Decorator-Patches übertragen werden müssen.

+0

aussieht @ Winkel/cli 1.6.8 das Problem gelöst ... – zhekaus

Antwort

0

Ich stieß auch auf dieses Problem. In meiner Situation möchte ich die BusyConfig-Parameter überschreiben. App funktioniert ordnungsgemäß mit ng serve, aber wenn ich App für die Produktion erstellen möchten Function calls are not supported in decorators but ... Ausnahme auftritt.

Meine Lösung ist folgende: ng build --prod --aot=false

The Angular Ahead-of-Time (AOT) compiler converts your Angular HTML and TypeScript code into efficient JavaScript code during the build phase before the browser downloads and runs that code.

ng build --prod gleiche ist wie ng build --prod --aot

+0

Ihre Lösung löst nichts. Ich bin auf das Problem gestoßen, vor allem wollte ich AOT verwenden. AOT ist essentiell für die Produktion. – zhekaus

Verwandte Themen