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ö :

  • [email
  • [email

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"
      }
    },
    ...
  })

Relaterade artiklar