Angular 5运行ng e2e遇Protractor编译错误及进程退出问题
解决Angular5中执行
ng e2e的Protractor编译错误 刚维护老Angular项目时碰到过一模一样的问题,给你几个经过验证的解决方案,按顺序试试:
1. 锁定兼容的TypeScript版本
Angular 5只支持TypeScript 2.4.x系列,要是项目里的TS版本太高或太低,肯定会和Protractor的编译逻辑冲突。
- 打开你的
package.json,把typescript的版本改成:"typescript": "~2.4.2" - 删除本地依赖缓存和锁文件,重新安装:
rm -rf node_modules package-lock.json npm install
2. 修复Protractor的TS编译配置
错误提示指向node_modules/protractor下的tsconfig.json,说明它的编译规则和项目不兼容:
- 找到
node_modules/protractor/tsconfig.json,修改这几个关键配置:{ "compilerOptions": { "target": "es5", "module": "commonjs", "skipLibCheck": true, // 其他配置保持不变 } } - 为了避免下次
npm install覆盖修改,推荐用patch-package持久化补丁:- 安装依赖:
npm install patch-package --save-dev - 修改完tsconfig后执行:
npx patch-package protractor
这样以后重装依赖时,补丁会自动生效。
- 安装依赖:
3. 匹配Angular5的Protractor版本
Angular5对应的稳定Protractor版本是5.4.x,要是你的版本太新(比如6+)大概率会出现兼容问题:
- 在
package.json里把protractor版本改成:"protractor": "~5.4.2" - 重新安装依赖后,再运行
ng e2e试试。
4. 检查项目的E2E专属TS配置
如果项目根目录或e2e文件夹下有tsconfig.e2e.json,确保它的配置符合Protractor要求:
{ "compilerOptions": { "target": "es5", "module": "commonjs", "types": ["jasmine", "node"] } }
补充说明:错误码100只是Protractor启动器因为编译失败抛出的退出码,只要解决了TypeScript的编译问题,这个错误会自动消失。
内容的提问来源于stack exchange,提问作者James Delaney
相关产品推荐
相关产品推荐

