2017-04-26 2 views
0

Ich arbeite an einer Angular 4-Anwendung, die angle-cli und webpack2 verwendet.Angular 4, Unerwarteter Token-Fehler bei der Erstellung von ng --prod

ich jedoch das Projekt mit ng build

erfolgreich aufbauen kann, wenn ich ng build --prod der folgende Fehler ausgeführt wird geworfen:

ERROR in main.50d83f3f70f7e607ec7a.bundle.js von UglifyJs Unexpected Token: Name (FilterPipe) [main.50d83f3f70f7e607ec7a.bundle.js: 7,6]

Ich verstehe nicht, was falsch ist.

Hier ist meine filter.pipe.ts Datei:

import {Pipe, PipeTransform } from '@angular/core'; 

@Pipe({ 
    name: 'filter' 
}) 

export class FilterPipe implements PipeTransform { 
    transform(items: any[], field : string, value : string): any[] { 
     if (!items) return []; 
     return items.filter(it => it[field] == value); 
    } 
} 
+3

Überprüfen Sie, ob Ihr Ziel nicht es6 ist, die Probleme mit uglify bekannt . –

Antwort

2

Dies geschieht, weil uglify Unterstützung es6 Syntax noch tut.

https://github.com/angular/angular-cli/issues/1663

Ändern tsconfig.json fr sicher zu überprüfen, ob "Ziel": "ES5", gibt es Beispiel:

{ 
    "compileOnSave": false, 
    "compilerOptions": { 
    "outDir": "./dist/out-tsc", 
    "baseUrl": "src", 
    "sourceMap": true, 
    "declaration": false, 
    "moduleResolution": "node", 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "target": "es5", 
    "typeRoots": [ 
     "node_modules/@types" 
    ], 
    "lib": [ 
     "es2016", 
     "dom" 
    ] 
    } 
} 
+0

Ich habe meine tsconfig.json geändert, um ein "Ziel" zu haben: "es5" und ich bekomme immer noch diesen Fehler. Gibt es weitere Schritte, die ich ergreifen muss, um sicherzustellen, dass dies funktioniert? –

+0

@JustinGrahn Ich stehe vor einem ähnlichen Problem. Hast du eine Lösung gefunden? – kds23

+0

@ kds23 Oh Junge, ich tat, aber es gab mehrere Probleme auf einmal so lassen Sie mich versuchen, zurück zu gehen. Ich denke, das erste Problem, das ich hatte, wurde gelöst, indem eine andere Version von Uglify erzwungen wurde. Suchen Sie herum, aber es gibt einen Angular- oder Typescript-Thread, der detailliert erläutert, warum dies erforderlich ist. Zweitens erlaubte der JIT-Compiler meiner Komponente html, auf private Variablen zu verweisen, die aus irgendeinem Grund beim Kompilieren mit dem AOT-Compiler, der vom -prod-Flag verwendet wird, nicht zulässig sind. Daher musste ich jede private Variable konvertieren, auf die von meiner verwiesen wurde HTML. Ich denke, die Uglify-Version ist deine beste Wahl –

Verwandte Themen