我正在为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();
解决此错误的最佳方法是什么?
答案 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",
有帮助吗?