我热衷于用 gitlab 的 CI/CD 设置我的项目。我试图在将其移动到那里之前设置phantomJS测试:
- 我在现有的 ng 项目中运行了
npm i -D phantomjs-prebuilt karma-phantomjs-launcher
。 - 我跑
npm i -s intl
-
我编辑了我的karma.conf.js文件,包括:
require('karma-phantomjs-launcher'), //... browsers: ['Chrome', 'PhantonJS'],
-
我编辑了polyfills.js文件,取消注释:
import 'core-js/es6/symbol'; import 'core-js/es6/object'; import 'core-js/es6/function'; import 'core-js/es6/parse-int'; import 'core-js/es6/parse-float'; import 'core-js/es6/number'; import 'core-js/es6/math'; import 'core-js/es6/string'; import 'core-js/es6/date'; import 'core-js/es6/array'; import 'core-js/es6/regexp'; import 'core-js/es6/map'; import 'core-js/es6/weak-map'; import 'core-js/es6/set'; //... import 'intl'; // Run `npm install --save intl`. /** * Need to import at least one locale-data with intl. */ import 'intl/locale-data/jsonp/en';
现在,我应该准备好进行测试了...或者我是这么想的。但我得到:
ng test --browser PhantomJS --watch false
27 07 2017 17:36:52.088:INFO [PhantomJS 2.1.1 (Windows 8 0.0.0)]: Connected on socket dyKzQygLaKO5BjSRAAAA with id 32293
707
PhantomJS 2.1.1 (Windows 8 0.0.0) ERROR
SyntaxError: Use of reserved word 'let' in strict mode
at http://localhost:9876/_karma_webpack_/main.bundle.js:663
PhantomJS 2.1.1 (Windows 8 0.0.0) ERROR
SyntaxError: Use of reserved word 'let' in strict mode
at http://localhost:9876/_karma_webpack_/main.bundle.js:663
PhantomJS 2.1.1 (Windows 8 0.0.0) ERROR
SyntaxError: Use of reserved word 'let' in strict mode
at http://localhost:9876/_karma_webpack_/main.bundle.js:663
这确实与不支持ES2015的PhantomJS有关。但是,您不必等待 PhantomJS 2.5:您只需要安装和配置适当的 polyfill。
按照 https://stackoverflow.com/a/42692195/1501787 中的步骤操作,您将获得PhantomJS与ES2015一起运行而不会出现问题。我已经在 Angular 4 应用程序中进行了测试,它运行良好。
如果您使用的是target: "es5"
,则应检查您的tsconfig.json
PhantomJS还不了解ES2015,let
关键字是此规范的一部分。PhantomJS Team 计划在 2.5 版本中发布对 ES2015 的支持。