对于我的github项目,使用Travis CI出现以下编译错误:
sh: 1: mocha: not found
我的主项目文件夹“ projectRoot”(对应于我的github存储库)包含.travis.yml配置文件;它还包含几个子文件夹(每个应用程序一个):
projectRoot
|-- app1
|-- app1.js
|-- package.json
|--- node_modules
|--- .bin
|--- mocha
|--- mocha.cmd
|-- app2
|-- app2.js
|-- package.json
|--- node_modules
|--- .bin
|--- mocha
|--- mocha.cmd
|-- app3
|-- ...
每个应用程序都有其自己的package.json和node_modules软件包。
app1的package.json包含以下内容:
"scripts": {
"test": "mocha"
},
"devDependencies": {
"chai": "^4.2.0",
"mocha": "^5.2.0"
},
当Travis CI尝试运行app1的单元测试时,出现以下错误:
$ npm test
> projectRoot@1.0.2 test /home/travis/build/username/projectRoot/app1
> mocha
sh: 1: mocha: not found
npm ERR! Test failed. See above for more details.
我尝试添加以下before_script将当前目录更改为app1,然后在开始测试之前修改PATH变量:
before_script:
- echo "*** PRE BUILD SCRIPT ***"
- cd ./app1
- export PATH=$(pwd)/node_modules/.bin:$PATH
- echo $PATH
- echo "*************************"
这样做之后,上面的“ echo $ PATH”行在travis日志中显示PATH包含项目文件夹:
$ echo $PATH
/home/travis/build/username/projectRoot/app1/node_modules/.bin:/home/travis/.rvm/gems/ruby-2.4.1/bin:/home/travis/......
但是错误仍然存在。
我也尝试过:
PATH=./node_modules/.bin:$PATH.
或更改测试脚本以使用相对路径:
"scripts": {
"test": "./node_modules/.bin/mocha"
}
但是仍然存在相同的错误。
任何建议将不胜感激。
非常感谢您的帮助