我已切换到 Angular4.0.0-rc.1 和 看起来ES5测试包包含ES2015代码。
我收到了这个错误:
$('input[type=button]').each(function(){
var value = $(this).val();
if (value === "accountNumber") {
alert("accountNumber");
} else if (value === "name"){
alert("name");
} else if (value === "location"){
alert("location");
} else if (value === "billingAddress"){
alert("billingAddress");
}
});
还在Angular repo上找到了related issue。
答案 0 :(得分:6)
我刚刚创建了一个基本的Angular项目,并且与PhantomJS集成有相同(或类似)的问题。
PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR
SyntaxError: Unexpected token 'const'
at webpack:///src/app/app.component.ts:1:0 <- src/test.ts:63184
PhantomJS是一款无头(又名,无GUI)浏览器,可用于自动化测试。 目前,PhantomJS有一个限制,它只支持ES5 standard。
npm install -g phantomjs-prebuilt
npm install --save-dev karma-phantomjs-launcher
require('karma-phantomjs-launcher')
添加到插件部分PhantomJS
添加到浏览器npm install --save intl
import 'intl';
(在底部取消注释) import "core-js/client/shim";
添加到Evergreen要求部分es5
。假设一切顺利,测试应该有效。
有关如何触发测试运行的一些示例:
ng test --browsers PhantomJS --singleRun true
./node_modules/karma/bin/karma start ./karma.conf.js --browsers PhantomJS --singleRun true
答案 1 :(得分:0)
当您使用@angular/cli: 1.0.0-rc.1
时,我认为您的tsconfig.json
看起来像这样:
{
"compileOnSave": false,
"compilerOptions": {
...
"target": "es5",
"module": "es2015",
"lib": [
"es2016",
"dom"
]
}
}
你的E2E文件夹中也应该有一个tsconfig.e2e.json
:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../dist/out-tsc-e2e",
"module": "commonjs",
"target": "es6",
"types":[
"jasmine",
"node"
]
}
}
只需删除行"target": "es6"
,当这些文件扩展到前一个文件时,您最终将在ES5中编译您的应用。
之后它应该可以工作。
答案 2 :(得分:0)
在我的情况下,在更新karma.config.js以使用PhantomJS启动器后测试失败。
要对问题进行排序,请更新 src / tsconfig.spec.json 以使用ES5而不是ES6。
{
...
"target": "es5",
...
}
答案 3 :(得分:0)
在我的情况下,由于流氓导入,webpack不太喜欢,或者更不知道如何处理它:
import {HttpClient} from "selenium-webdriver/http";
用正确的HttpClient(我们自己的)替换解决了这个问题。问题是JS文件实际上是指&#34; const&#34;关键字,但我相信这是一个ES6保留字而不是ES5保留字,因此我们的错误。 如果你得到类似的东西,那么你指的是下载编译器没有发现你想要任何转换的库。