GitLab CI执行E2E测试提示webdriver-manager不是内部或外部命令问题咨询
问题根因
你的错误本质是npm执行pree2e钩子脚本时,没有找到webdriver-manager可执行文件的路径:
- GitLab CI运行环境中,全局安装的npm包默认不会被npm run的脚本执行环境纳入搜索路径
- npm执行项目脚本时,默认优先搜索项目本地
node_modules/.bin目录下的可执行文件,你全局安装的Protractor不在该目录下,自然无法识别
修复步骤
步骤1:把Protractor加入项目本地依赖
不要再用全局安装的方式,本地开发环境执行以下命令,将Protractor加入开发依赖:
npm install protractor --save-dev
执行完成后把更新后的package.json和package-lock.json提交到代码库,保证CI环境安装依赖时可以同步安装对应版本。
步骤2:二选一调整配置即可
方案A:修改pree2e脚本(优先推荐,跨平台兼容性最好)
打开你项目的package.json,找到scripts下的pree2e配置,把原命令改成用npx调用:
{ "scripts": { "pree2e": "npx webdriver-manager update --ignore_ssl --gecko false" } }
npx会自动查找项目本地node_modules/.bin下的可执行文件,不需要额外调整PATH配置,Windows/Linux/macOS环境都通用。
方案B:调整GitLab CI配置,手动添加PATH
如果你不想修改package.json,可以直接修改你的gitlab-ci.yml:
- 删掉
before_script里的npm install protractor -g全局安装步骤,依赖已经在本地安装 - 在test阶段的脚本开头,把本地node_modules的可执行目录加入PATH:
stages: - build - test before_script: - npm install build: stage: build script: - npm run build test: stage: test script: # 如果你的GitLab Runner用的是Windows系统,把下面这行换成 set PATH=%PATH%;.\node_modules\.bin - export PATH=$PATH:./node_modules/.bin - npm run test:e2e only: - master
验证
提交所有修改后重新触发流水线,即可解决webdriver-manager未识别的报错。
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

