angularjs - "Oväntad token export" i Angular-app med SystemJS och TypeScript
Problem: mystisk "Oväntad token export"
Jag råkade få detta fel i ett Angular-exempel som körs i Plunker där SystemJS transpilerar TypeScript-kod i webbläsaren.
Det var inget fel på koden som körde felfritt lokalt.
Svar #1
Lösning
Det här är inte ett Angular-problem. Det är ett problem med att transpila vissa typer av TypeScript-filer i webbläsaren.
I mitt fall spårade jag problemet till en enda fil som endast exporterade en abstrakt klass.
// Class used as a "narrowing" interface that exposes a minimal logger
// Other members of the actual implementation are invisible
export abstract class MinimalLogger {
logs: string[];
logInfo: (msg: string) => void;
}
Problemet är att den här filen inte exporterar något annat än den abstrakta klassen.
När jag lägger till en inert export av något konkret ... som detta:
export const _ = 0; // hack: must export something "real"
... felet försvinner.
Jag har sett ett liknande problem med en fil som bara exporterar TypeScript-gränssnitt. Du måste ge den åtminstone en sak som är "verklig".
Miljö :
SystemJS-konfiguration för detta exempel:
System.config({
// DEMO ONLY! REAL CODE SHOULD NOT TRANSPILE IN THE BROWSER
transpiler: 'ts',
typescriptOptions: {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["es2015", "dom"],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true
},
meta: {
'typescript': {
"exports": "ts"
}
},
...
})
