"意外的令牌导出"在Angular应用程序中使用SystemJS和TypeScript

时间:2017-04-01 09:01:08

标签: angularjs typescript systemjs

问题:神秘"意外的令牌导出"

我碰巧在plunker中运行的Angular示例中出现此错误,其中SystemJS在浏览器中转换TypeScript代码。

本地运行良好的代码没有任何问题。

1 个答案:

答案 0 :(得分:3)

解决方案

这不是一个Angular问题。在浏览器中转换某些类型的TypeScript文件会出现问题。

在我的情况下,我将问题跟踪到单个文件仅导出抽象类

// 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;
}

问题是该文件不会导出除抽象类之外的任何

当我添加任何具体的惰性导出时......就像这样:

export const _ = 0; // hack: must export something "real"

......错误消失了。

我发现只有导出TypeScript接口的文件存在类似问题。你必须给它至少一件事是真实的"。

环境:

  • typescript@2.2.1
  • systemjs@0.19.39

此示例的SystemJS配置:

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