Сборка Travis не удалась из-за того, что mocha не найден в подпапке проекта - PullRequest
0 голосов
/ 05 ноября 2018

У меня следующая ошибка компиляции с использованием 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"
 }

Но остается та же ошибка.

Любой совет будет очень признателен.

Большое спасибо за вашу помощь

...