如何解决打字稿错误意外令牌导入?

时间:2017-10-31 04:42:17

标签: angular typescript

我正在为Wordpress 4.8编写一个Angular 4主题,主要用于Edge和Chrome浏览器。我的测试脚本在test.ts上失败,错误为:

Uncaught SyntaxError: Unexpected token import at src/test.js:1

\ src文件夹中的我的tsconfig.json如下:

{
  "compilerOptions": {
  "module": "commonjs",
  "target": "es5",
  "moduleResolution": "node",
  "sourceMap": true,
  "emitDecoratorMetadata": true,
  "experimentalDecorators": true,
  "lib": [ "es2016", "es5", "dom"],
  "noImplicitAny": true,
  "suppressImplicitAnyIndexErrors": true
}
}
根级别的

tsconfig.json是:

{
  "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",
     "es5"
     ]
  }
 }

我的test.ts包括:

import {BrowserDynamicTestingModule, platformBrowserDynamicTesting} from 
"@angular/platform-browser-dynamic/testing";
import {getTestBed} from "@angular/core/testing";

declare var _karma_: any;
declare var require: any;

_karma_.loaded = function () {};

getTestBed().initTestEnvironment(
    BrowserDynamicTestingModule,
    platformBrowserDynamicTesting()
);

const context = require.context('./', true, /\.spec\.ts$/);

context.keys().map(context);

_karma_.start();

解决此错误的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

  

未捕获的SyntaxError:src / test.js上的意外的令牌导入:1

import应该由TypeScript

编译

修复

确保ts实际上正在通过TypeScript编译器(以获取实际 JS)。

这是配置错误。 "module": "es6",错了。建议在webpack中使用"module": "commonjs",

更多

快速入门https://basarat.gitbooks.io/typescript/content/docs/quick/browser.html

答案 1 :(得分:2)

如果你cd到你的./app/ui目录并在那里运行tsc -p .,你会看到同样的问题......

问题是您在 tsconfig.json

中使用"模块":" system"

TypeScript有两种解决模块名称的策略:

  • node - 模仿NodeJS classic中模块名称的解析方式

  • 在向上查找模块的文件夹结构时不考虑node_modules的原始策略(请参阅 https://www.typescriptlang.org/docs/handbook/module-resolution.html 详情)。策略可以通过moduleResolution编译器指定 选项。如果省略此选项,编译器将在目标时使用节点 模块种类是常见的和经典的,所以,在你的情况下 使用经典分辨率,而node_modules中的模块则不使用 找到。我建议您在配置中明确指定解决方案:

    " moduleResolution":" node",

有帮助吗?