У меня следующая ошибка компиляции с использованием Travis CI для моего проекта github:
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.
В package.json app1 содержится следующее:
"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"
}
Но остается та же ошибка.
Любой совет будет очень признателен.
Большое спасибо за вашу помощь