คุณจะติดตั้งและเรียกใช้ Mocha ซึ่งเป็นโมดูลการทดสอบ Node.js ได้อย่างไร รับ“ mocha: command not found” หลังจากติดตั้ง


92

ฉันมีปัญหาในการทำให้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)

ฉันจะดำเนินการทดสอบด้วยคำสั่งเดียวได้อย่างไร คำสาบานดูเหมือนจะยอมคุณ แต่ฉันได้ยินมาว่ามอคค่าเป็นทางเลือกที่ดีกว่าฉันดูเหมือนจะไม่สามารถทำงานได้อย่างถูกต้อง

และมีความคิดเห็นเกี่ยวกับข้อผิดพลาดที่ฉันได้รับข้างต้นในความพยายามครั้งที่สามของฉันหรือไม่?

แก้ไข:

ฉันกำลังวิ่ง,

  • Ubuntu 11.10 64 บิต
  • โหนด js 0.7.5
  • npm 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หากสิ่งนี้ทำงานไม่ถูกต้องในสภาพแวดล้อมของคุณอาจเป็นจุดบกพร่องหรือเพียงแค่ mocha ไม่ได้รับการอัปเดตเพื่อรองรับโหนด 0.7 เกี่ยวกับคำเตือนการเลิกใช้งานของคุณexistsและexistsSyncถูกย้ายจากpathไปยังfsในโหนด 0.7.1
Linus Thiel

ฉันปรับลดรุ่นเป็น Node.js 0.6.12 เพิ่ม "./node_modules/.bin" ใน PATH ของฉันและทุกอย่างเหมาะสมกับโลก
Stephen Melrose

คำตอบ:


183

ตั้งแต่ npm 5.2.0 มีคำสั่งใหม่ "npx" มาพร้อมกับ npm ซึ่งทำให้ง่ายขึ้นมากหากคุณเรียกใช้:

npx mocha <args>

หมายเหตุ: args ที่เป็นทางเลือกจะถูกส่งต่อไปยังคำสั่งที่กำลังดำเนินการอยู่ (mocha ในกรณีนี้)

การดำเนินการนี้จะเลือกคำสั่ง "mocha" ที่เรียกใช้งานได้โดยอัตโนมัติจากมอคค่าที่ติดตั้งในเครื่องของคุณ (เพิ่มเป็นการพึ่งพา dev เสมอเพื่อให้แน่ใจว่าคุณและคนอื่น ๆ ใช้คำสั่งที่ถูกต้องเสมอ)

โปรดระวังว่าหากคุณไม่ได้ติดตั้ง mocha คำสั่งนี้จะดึงข้อมูลและใช้เวอร์ชันล่าสุดโดยอัตโนมัติซึ่งเหมาะสำหรับเครื่องมือบางอย่าง (เช่น scaffolders เป็นต้น) แต่อาจไม่แนะนำมากที่สุดสำหรับการอ้างอิงบางอย่างที่คุณอาจต้องการ ตรึงเป็นเวอร์ชันเฉพาะ

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ npx ได้ที่นี่


ตอนนี้ถ้าแทนที่จะเรียกใช้ mocha โดยตรงคุณต้องการกำหนดสคริปต์ npm ที่กำหนดเองนามแฝงที่อาจเรียกใช้ไบนารี npm อื่น ๆ ...

คุณไม่ต้องการให้การทดสอบไลบรารีของคุณล้มเหลวขึ้นอยู่กับการตั้งค่าเครื่อง (มอคค่าเป็นโกลบอลเวอร์ชันมอคค่าส่วนกลาง ฯลฯ ) วิธีใช้มอคค่าท้องถิ่นที่ทำงานข้ามแพลตฟอร์มคือ:

node node_modules/.bin/mocha

npm ใส่นามแฝงให้กับไบนารีทั้งหมดในการอ้างอิงของคุณในโฟลเดอร์พิเศษนั้น สุดท้าย npm จะเพิ่ม node_modules / .bin ไปยัง PATH โดยอัตโนมัติเมื่อเรียกใช้สคริปต์ npm ดังนั้นใน package.json ของคุณคุณสามารถทำได้เพียง:

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

และเรียกใช้ด้วย

npm test

1
+1 ฉันเคยใช้มอคค่ามาบ้างแล้ว แต่ไม่รู้ตัวเลย นี่ควรเป็นคำตอบที่ได้รับการยอมรับ!
gihanchanuka

7
@ michael.kebe ไม่คุณไม่จำเป็นต้องระบุเส้นทางนั้นเพื่อใช้มอคค่าในเครื่อง แต่ npm ได้เพิ่ม "./node_modules/.bin" ลงใน $ PATH แล้วดังนั้นจะใช้เวอร์ชันโลคัล
เบญจา

ฉันเชื่อว่าคำสั่งควรเป็น node node_modules / mocha / bin / mocha ไม่ใช่ node node_modules / .bin / mocha
Mina Luke

3
@MinaLuke ที่ใช้งานได้เช่นกัน แต่เป็นความคิดที่ไม่ดี/node_modules/.bin/{module-binary-name}เป็นที่ที่ npm วางทางลัดไปยังไบนารีในการอ้างอิงของคุณคุณไม่ควรอ้างอิงไฟล์โดยตรงในแหล่งที่มาของการอ้างอิงเนื่องจากอาจทำให้เวอร์ชันถัดไปเสียหาย
เบญจา

1
@DougBarbieri จับดีมันเป็นคำตอบเก่าฉันจะอัปเดตเพื่อพูดถึง npx ขอบคุณ!
เบญจา

18

หลังจากอ่านเพิ่มเติมและยืนยันจาก Linus G Thiel ข้างต้นฉันพบว่าฉันต้องทำ

  • ดาวน์เกรดเป็น Node.js 0.6.12
  • และอย่างใดอย่างหนึ่ง
    • ติดตั้ง Mocha ทั่วโลก
    • เพิ่ม./node_modules/.binในไฟล์PATH

4
ฉันมีโหนด 0.8.12 และมอคค่าทั้งติดตั้งทั่วโลกและในเครื่อง (สำหรับโปรเจ็กต์ต่าง ๆ ) และใช้งานได้ จึงไม่จำเป็นต้องดาวน์เกรดโหนด สำหรับมอคค่าที่ติดตั้งในเครื่องเพียงตรวจสอบให้แน่ใจว่า PATH ของคุณได้รับการตั้งค่าตามด้านบนหรือเรียกโดยตรงจากสคริปต์ของคุณ (Makefile หรือแท็ก "สคริปต์")
Qichao Dong

1
ฉันติดตั้ง Mocha ในเครื่องและทั่วโลก แต่ไม่พบในเส้นทาง (Win8) ฉันต้องเพิ่มโฟลเดอร์ './node_modules/.bin' ด้วยตนเองที่สัมพันธ์กับโครงการของฉันไปยัง PATH ของฉันรีสตาร์ทคอนโซลจากนั้นพิมพ์ 'mocha' จะใช้งานได้ ไม่เหมาะ แต่เป็นการแฮ็กอย่างรวดเร็วเพื่อให้ทำงานได้ บางทีถ้าคุณมีตำแหน่งระดับบนสุดเพื่อติดตั้งมอคค่าในเครื่องให้เชื่อมโยงไปยัง PATH นั้นเพื่อให้คุณสามารถใช้ที่อื่นได้
Ali


1

ในขณะที่ติดตั้งโมดูลโหนดสำหรับมอคค่าฉันได้ลองใช้คำสั่งด้านล่าง

  • npm ติดตั้ง
  • npm ติดตั้งมอคค่า
  • npm ติดตั้ง - บันทึก - dev มอคค่า
  • npm ติดตั้ง mocha -g # เพื่อติดตั้งทั่วโลกด้วย

และในการรันหรือดำเนินการทดสอบมอคค่าที่ฉันพยายาม

  • การทดสอบมอคค่า
  • การทดสอบการรัน npm
  • การทดสอบการทดสอบมอคค่า \ index.test.js
  • การทดสอบ npm

แต่ฉันได้รับข้อผิดพลาดด้านล่างเป็น:

ไม่รู้จัก 'Mocha' เป็นคำสั่งภายในหรือภายนอก

ดังนั้นหลังจากลองทุกอย่างแล้วมันก็ออกมาเป็นเพียงแค่กำหนดเส้นทางไปยังตัวแปรสภาพแวดล้อมภายใต้ตัวแปรระบบเป็น:

C: \ Program Files \ nodejs \

และมันใช้งานได้ :)


0

ในการเรียกใช้Mochaด้วยmochaคำสั่งจากเทอร์มินัลของคุณคุณต้องติดตั้งมอคค่าทั่วโลกบนthisเครื่อง:

npm install --global mocha

จากนั้นcdไปที่projectFolderของคุณ/ ทดสอบและเรียกใช้mocha yourTestFileName.js


หากคุณต้องการให้mochaพร้อมใช้งานภายในของคุณpackage.jsonเป็นการพึ่งพาการพัฒนา:

npm install --save-dev mocha

จากนั้นเพิ่ม mochapackage.jsonภายในสคริปต์ของคุณ

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

จากนั้นเรียกใช้npm testภายในเทอร์มินัลของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.