Как "npm" запускает "npm test"?
Я всегда думал, что команда npm test
просто запускает то, что я написал бы в package.json
внутри scripts: { test:...}
раздел scripts: { test:...}
. Но у меня есть эта странная ошибка, когда она не работает.
Итак, у меня есть этот кусок конфигурации в package.json
"scripts": {
"start": "node index.js",
"test": "mocha tests/spec.js"
}
Когда я пытаюсь запустить тесты, я npm test
в терминале и получаю такую ошибку:
module.js:340
throw err;
^
Error: Cannot find module 'commander'
Но все в порядке, когда я mocha tests/spec.js
только mocha tests/spec.js
Есть идеи, почему это?
ОБНОВИТЬ:
Я попытался установить Commander, и у меня возникла ошибка. Не могу найти модуль 'glob'. После установки glob
у меня
Ошибка: не удается найти модуль '../'**
Но на самом деле вопрос в том, почему у меня есть эти ошибки и почему все нормально при запуске mocha tests/spec.js
?
Ответы
Ответ 1
У вас может быть установлено две версии mocha: одна глобально (npm install -g mocha
) и одна локально, которая, похоже, не работает.
Когда вы запускаете скрипт через npm
, либо как npm run-script <name>
либо с помощью определенного ярлыка, такого как npm test
или npm start
, ваш текущий каталог bin
каталога пакетов находится в npm start
вашего пути. Для вашего пакета, который, вероятно, ./node_modules/.bin/
, который содержит ссылку на пакет mocha
исполняемый скрипт.
Вероятно, вы можете исправить это, удалив локальный mocha и переустановив его с помощью --save-dev:
rm -rf node_modules/mocha
npm install --save-dev mocha
Это должно дать вам рабочую локальную копию mocha со всеми установленными зависимостями (commander и т.д.).