आप Mocha, Node.js के परीक्षण मॉड्यूल को कैसे स्थापित और चलाएंगे? स्थापित होने के बाद "मोचा: कमांड नहीं मिला"


90

मुझे मोचा को उम्मीद के मुताबिक काम करने में परेशानी हो रही है, और मैं दस्तावेज के रूप में कहना पसंद करूंगा, लेकिन वहाँ (प्रतीत होता है) वास्तव में चल रही चीज पर ज्यादा प्रलेखन नहीं होना चाहिए।

मैंने इसे 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)

मैं केवल एक ही आदेश के साथ अपने परीक्षणों को कैसे निष्पादित कर सकता हूं? प्रतिज्ञा आपको लगता है, लेकिन मैंने सुना है कि मोचा बेहतर विकल्प है, मैं अभी इसे सही तरीके से काम नहीं कर पा रहा हूं।

और मेरे तीसरे प्रयास में मुझे मिली त्रुटि पर कोई विचार?

संपादित करें:

मैं चल रहा हुँ,

  • उबंटू 11.10 64-बिट
  • नोड .js 0.7.5
  • एनपीएम 1.1.8
  • मोचा 0.14.1
  • 0.6.0 चाहिए

2
नोड 0.6.12, एनपीएम 1.1.4 और निष्पादन के साथ npm install mocha, मुझे ./node_modules/.bin/mochaउम्मीद के मुताबिक मिल गया है। sudo npm install -g mochaमुझे मिलता है /usr/local/bin/mocha। यदि यह आपके वातावरण में ठीक से काम नहीं करता है, तो यह बग हो सकता है, या नोड 0.7 का समर्थन करने के लिए सिर्फ मोचा अपडेट नहीं किया जा सकता है। *। आपके पदावनति चेतावनी के संबंध में, existsऔर नोड 0.7.1 existsSyncसे स्थानांतरित कर pathदिया fsगया।
लिनस थिएल

मैंने Node.js 0.6.12 को डाउनग्रेड किया, "" ./node_modules/.bin "को अपने PATH में जोड़ा, और दुनिया के साथ सब सही है।
स्टीफन मेलरोस

जवाबों:


178

npm 5.2.0 के बाद से, npm के साथ एक नया कमांड "npx" शामिल है, जो इसे चलाने पर बहुत सरल हो जाता है:

npx mocha <args>

नोट: वैकल्पिक आर्ग्स कमांड को निष्पादित किया जा रहा है (इस मामले में मोचा)

यह स्वचालित रूप से आपके स्थानीय रूप से स्थापित मोचा से निष्पादन योग्य "मोचा" कमांड को उठाएगा (हमेशा इसे एक निर्भरता के रूप में जोड़ें, यह सुनिश्चित करने के लिए कि सही हमेशा आपके और सभी के द्वारा उपयोग किया जाता है)।

हालांकि सावधान रहें कि यदि आपने मोचा स्थापित नहीं किया है, तो यह कमांड स्वचालित रूप से नवीनतम संस्करण को लाएगा और उपयोग करेगा, जो कुछ टूल (उदाहरण के लिए मचान) के लिए बहुत अच्छा है, लेकिन कुछ निर्भरता के लिए सबसे अधिक अनुशंसा योग्य नहीं हो सकता है जहां आप चाहते हो सकते हैं एक विशिष्ट संस्करण में पिन करें।

आप यहाँ npx पर अधिक पढ़ सकते हैं


अब, अगर सीधे मोचा का आह्वान करने के बजाय, आप एक कस्टम npm स्क्रिप्ट को परिभाषित करना चाहते हैं, एक उपनाम जो अन्य npm बायनेरिज़ को आमंत्रित कर सकता है ...

आप मशीन सेटअप (वैश्विक, वैश्विक मोचा संस्करण, आदि के रूप में मोचा) के आधार पर अपने पुस्तकालय परीक्षणों को विफल नहीं करना चाहते हैं, क्रॉस-प्लेटफॉर्म पर काम करने वाले स्थानीय मोचा का उपयोग करने का तरीका है:

node node_modules/.bin/mocha

npm उस विशेष फ़ोल्डर पर आपकी निर्भरता के सभी बायनेरिज़ में उपनाम रखता है। अंत में, npm पटकथा को चलाने के दौरान nAT_modules / .bin को PATH में स्वचालित रूप से जोड़ देगा, इसलिए आपके पैकेज में। आप केवल ऐसा कर सकते हैं:

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

और इसके साथ आह्वान करें

npm test

1
+1, मैं कुछ समय पहले से मोचा का उपयोग कर रहा हूं, लेकिन मुझे इसका एहसास नहीं था। यह स्वीकृत उत्तर होना चाहिए!
जिहानचानुका

6
@ michael.kebe नहीं, आपको स्थानीय मोच का उपयोग करने के लिए उस पथ को निर्दिष्ट करने की आवश्यकता नहीं है, npm पहले से ही $।
बेंज

मेरा मानना ​​है कि कमांड को नोड node_modules / mocha / bin / mocha नहीं होना चाहिए नोड node_mododules / .bin / mocha
मीना ल्यूक

3
@MinaLuke जो काम भी करती है, लेकिन यह एक बुरा विचार है, /node_modules/.bin/{module-binary-name}वह स्थान है जहाँ npm आपके आश्रितों में बायनेरिज़ के लिए शॉर्टकट डालता है, आपको सीधे निर्भरता के स्रोतों में एक फ़ाइल का संदर्भ नहीं देना चाहिए, क्योंकि यह अगले संस्करण पर टूट सकता है।
बेंजा

1
@DougBarbieri अच्छी पकड़ है, यह एक पुराना जवाब है, मैं npx का उल्लेख करने के लिए अद्यतन करूँगा, धन्यवाद!
बेंजा

18

आगे पढ़ने के बाद, और ऊपर लिनुस जी थिएल से पुष्टि के बाद, मैंने पाया कि मुझे बस

  • Node.js 0.6.12 पर डाउनग्रेड करें
  • और या तो,
    • मोचा को वैश्विक के रूप में स्थापित करें
    • ./node_modules/.binमेरे लिए जोड़ेंPATH

4
मेरे पास वैश्विक स्तर पर और स्थानीय रूप से स्थापित (विभिन्न परियोजनाओं के लिए) दोनों में 0.8.12 और मोचा है, और वे काम कर रहे हैं। इसलिए नोड को डाउनग्रेड करने की आवश्यकता नहीं है। स्थानीय रूप से स्थापित मोचा के लिए, बस यह सुनिश्चित करें कि आपका पेटीएच ऊपर के रूप में सेट है, या इसे सीधे अपनी स्क्रिप्ट (मेकफाइल या "स्क्रिप्ट" टैग) से कॉल करें।
Qichao डोंग

1
मेरे पास मोचा स्थानीय रूप से और विश्व स्तर पर स्थापित था लेकिन यह पथ में नहीं मिला (Win8)। मुझे अपने PATH के प्रोजेक्ट के लिए मैन्युअल रूप से './node_modules/.bin' फ़ोल्डर जोड़ना था, कंसोल को फिर से शुरू करना था और फिर 'मोचा' टाइप करना काम करेगा। आदर्श नहीं है, लेकिन इसे काम करने के लिए एक त्वरित हैक। शायद अगर आपके पास स्थानीय स्तर पर मोचा को स्थापित करने के लिए शीर्ष स्तर का स्थान है, तो उस PATH से लिंक करें ताकि आप इसे कहीं और उपयोग कर सकें।
अली

1

विंडोज के लिए :

Package.json

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

उसके बाद कमांड चलाएँ

npm run test

1

मोचा के लिए नोड मॉड्यूल स्थापित करते समय मैंने नीचे दिए गए आदेशों की कोशिश की थी

  • npm स्थापित करें
  • npm मोचा स्थापित करें
  • npm install --save-dev मोचा
  • npm mocha -g # को विश्व स्तर पर भी स्थापित करने के लिए स्थापित करें

और मोचा परीक्षण चलाने या निष्पादित करने पर मैं कोशिश कर रहा था

  • मोचा परीक्षण
  • npm रन टेस्ट
  • मोचा टेस्ट टेस्ट \ index.test.js
  • npm परीक्षण

लेकिन मुझे निम्न त्रुटि मिल रही थी:

'मोचा' को आंतरिक या बाहरी आदेश के रूप में मान्यता नहीं दी जाती है

इसलिए, सब कुछ आज़माने के बाद, सिस्टम वेरिएबल्स के तहत पर्यावरण चर के लिए रास्ता तय किया गया:

C: \ Program Files \ n नोड्स \

और यह काम किया :)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.