Як встановити та запустити Mocha, модуль тестування Node.js? Отримання “mocha: команду не знайдено” після встановлення


90

Я маю проблеми з тим, щоб Mocha працював, як очікувалося, і я хотів би сказати, що це задокументовано, але (з'являється) не так багато документації про те, щоб насправді запустити річ.

Я встановив його за допомогою npm(як глобально, так і локально), і кожного разу, коли я запускаю його, я отримую:

$ mocha
mocha: command not found

Гаразд, я зрозумів, що це не в моєму PATH, тому спробував запустити його безпосередньо,

$ ./node_modules/mocha/bin/mocha 
execvp(): No such file or directory

Нарешті, я спробував натиснути на інший binфайл, і отримав,

$ ./node_modules/mocha/bin/_mocha 
path.existsSync is deprecated. It is now called `fs.existsSync`.

  .

  ✔ 1 tests complete (1ms)

Як я можу просто виконати свої тести однією командою? Здається, обітниці дозволяють вам, але я чув, що Мокка - кращий вибір, я просто не можу зрозуміти, щоб він працював правильно.

І будь-які думки щодо помилки, яку я отримав вище з третьої спроби?

Редагувати:

Я біжу,

  • 64-розрядна версія Ubuntu 11.10
  • Node.js 0.7.5
  • нм 1.1.8
  • мокко 0,14,1
  • має 0,6,0

2
З вузлом 0.6.12, npm 1.1.4 та виконанням npm install mochaя отримую, ./node_modules/.bin/mochaяк очікувалося. sudo npm install -g mochaотримує мене /usr/local/bin/mocha. Якщо це не працює належним чином у вашому середовищі, це може бути помилка або просто мокко, яке не оновлено для підтримки вузла 0.7. *. Що стосується вашого попередження старіння, existsі existsSyncбули перенесені з pathдо fsв вузлі 0.7.1.
Лінус Тіль

Я знизився до Node.js 0.6.12, додав "./node_modules/.bin" до мого PATH, і зі світом все гаразд.
Стівен Мелроуз

Відповіді:


178

починаючи з npm 5.2.0, до npm додається нова команда "npx", яка робить це набагато простішим, якщо ви запускаєте:

npx mocha <args>

Примітка: необов’язкові аргументи пересилаються виконуваній команді (у цьому випадку мокко)

це автоматично вибере виконувану команду "mocha" у вашому локально встановленому mocha (завжди додайте її як залежність від розробника, щоб переконатися, що правильна завжди використовується вами та всіма іншими).

Будьте обережні: якщо ви не встановили mocha, ця команда автоматично завантажить та використає останню версію, яка чудово підходить для деяких інструментів (наприклад, лісів), але може бути не найбільш рекомендованою для певних залежностей, де ви можете захотіти прикріпіть до певної версії.

Більше про npx ви можете прочитати тут


Тепер, якщо замість безпосереднього виклику мокко ви хочете визначити власний сценарій npm, псевдонім, який може викликати інші двійкові файли npm ...

ви не хочете, щоб ваші тести бібліотеки провалились залежно від налаштування машини (mocha як глобальна, глобальна версія mocha тощо), спосіб використання локальної mocha, яка працює на різних платформах:

node node_modules/.bin/mocha

npm ставить псевдоніми до всіх двійкових файлів у ваших залежностях від цієї спеціальної папки. Нарешті, npm автоматично додасть node_modules / .bin до PATH під час запуску сценарію npm, тож у вашому package.json ви можете зробити просто:

"scripts": {
  "test": "mocha"
}

і викликати його за допомогою

npm test

1
+1, я використовував мокку ще колись тому, але я цього не усвідомлював. Це має бути прийнятою відповіддю!
gihanchanuka

6
@ michael.kebe ні, вам не потрібно вказувати цей шлях для використання локального мокко, npm вже додає "./node_modules/.bin" до $ PATH, тому він буде використовувати локальну версію за замовчуванням.
Бенджа,

Я вважаю, що команда повинна бути node node_modules / mocha / bin / mocha not node node_modules / .bin / mocha
Міна Лука

3
@MinaLuke, який теж працює, але це погана ідея, /node_modules/.bin/{module-binary-name}- це місце, де npm ставить ярлики до двійкових файлів у ваших залежностях, ви не повинні посилатись безпосередньо на файл у джерелах залежностей, оскільки це може зламатись у наступній версії.
Бенджа

1
@DougBarbieri приємний улов, це стара відповідь, я оновлю, щоб згадати npx, дякую!
Benja

18

Після подальшого прочитання та підтвердження від Лінуса Г. Тіеля вище, я виявив, що мені просто довелося,

  • Перейдіть на Node.js 0.6.12
  • І будь-який,
    • Встановіть Mocha як глобальний
    • Додайте ./node_modules/.binдо могоPATH

4
У мене є вузол 0.8.12 та mocha як глобально, так і локально (для різних проектів), і вони працюють. Тому немає необхідності знижувати версію вузла. Для локально встановленого мокко просто переконайтеся, що ваш PATH встановлений, як зазначено вище, або зателефонуйте йому безпосередньо зі свого сценарію (тег Makefile або тег "сценарії").
Qichao Dong

1
Я встановив Mocha локально та глобально, але його не було знайдено у шляху (Win8). Мені довелося вручну додати папку './node_modules/.bin' щодо мого проекту до мого PATH, перезапустити консоль, після чого набрав 'mocha'. Не ідеально, але швидкий хак, щоб змусити його працювати. Можливо, якщо у вас було місце на найвищому рівні для локального встановлення мокко, то перейдіть до цього ШЛЯХУ, щоб ви могли використовувати його деінде.
Алі

1

Для вікон:

Package.json

  "scripts": {
    "start": "nodemon app.js",
    "test": "mocha"
  },

потім запустіть команду

npm run test

1

Під час встановлення модульних вузлів для mocha я спробував наведені нижче команди

  • npm встановити
  • npm встановити
  • npm встановити --save-dev mocha
  • npm встановити mocha -g #, щоб також встановити його глобально

і під час запуску або виконання тесту мокко, який я намагався

  • тест мокко
  • npm тест запуску
  • тест мокко-тесту \ index.test.js
  • тест на нм

але я отримував нижченаведену помилку як:

'Mocha' не розпізнається як внутрішня чи зовнішня команда

Отже, спробувавши все, виявилося, що просто встановили шлях до змінних середовища під Системними змінними як:

C: \ Програмні файли \ nodejs \

і це спрацювало :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.