Làm cách nào để bạn cài đặt và chạy Mocha, mô-đun thử nghiệm Node.js? Nhận "mocha: command not found" sau khi cài đặt


90

Tôi đang gặp sự cố để Mocha hoạt động như mong đợi và tôi muốn nói như đã được ghi lại, nhưng có vẻ như không có nhiều tài liệu về việc thực sự vận hành mọi thứ.

Tôi đã cài đặt nó bằng cách sử dụng npm(cả toàn cầu và cục bộ) và mỗi khi tôi chạy nó, tôi nhận được:

$ mocha
mocha: command not found

Được rồi, vì vậy tôi nhận ra nó không nằm trong của tôi PATH, vì vậy tôi đã thử chạy trực tiếp,

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

Cuối cùng, tôi đã thử nhấn vào bintệp khác và nhận được,

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

  .

  ✔ 1 tests complete (1ms)

Làm cách nào để tôi có thể thực hiện các bài kiểm tra của mình bằng một lệnh duy nhất? Lời thề dường như để cho bạn, nhưng tôi nghe nói Mocha là sự lựa chọn tốt hơn, tôi dường như không thể làm cho nó hoạt động chính xác.

Và bất kỳ suy nghĩ nào về lỗi tôi gặp phải ở trên trong lần thử thứ ba của tôi?

Biên tập:

Tôi đang chạy,

  • Ubuntu 11.10 64-bit
  • Node.js 0.7.5
  • npm 1.1.8
  • mocha 0,14.1
  • nên 0,6.0

2
Với nút 0.6.12, npm 1.1.4 và đang thực thi npm install mocha, tôi nhận được ./node_modules/.bin/mochanhư mong đợi. sudo npm install -g mochađược tôi /usr/local/bin/mocha. Nếu điều này không hoạt động bình thường trong môi trường của bạn, đó có thể là một lỗi hoặc mocha không được cập nhật để hỗ trợ nút 0.7. *. Về cảnh báo không dùng nữa của bạn existsexistsSyncđã được chuyển từ pathsang fstrong nút 0.7.1.
Linus Thiel

Tôi đã hạ cấp xuống Node.js 0.6.12, thêm "./node_modules/.bin" vào PATH của mình và tất cả đều phù hợp với thế giới.
Stephen Melrose,

Câu trả lời:


179

kể từ npm 5.2.0, có một lệnh mới "npx" được bao gồm trong npm giúp việc này đơn giản hơn nhiều, nếu bạn chạy:

npx mocha <args>

Lưu ý: các args tùy chọn được chuyển tiếp đến lệnh đang được thực thi (trong trường hợp này là mocha)

điều này sẽ tự động chọn lệnh "mocha" có thể thực thi từ mocha được cài đặt cục bộ của bạn (luôn thêm nó làm phụ thuộc nhà phát triển để đảm bảo bạn và mọi người khác luôn sử dụng lệnh chính xác).

Hãy cẩn thận mặc dù nếu bạn không cài đặt mocha, lệnh này sẽ tự động tìm nạp và sử dụng phiên bản mới nhất, điều này rất tốt cho một số công cụ (chẳng hạn như giàn giáo), nhưng có thể không được khuyến nghị nhất đối với một số phụ thuộc mà bạn có thể muốn ghim vào một phiên bản cụ thể.

Bạn có thể đọc thêm trên npx tại đây


Bây giờ, nếu thay vì gọi mocha trực tiếp, bạn muốn xác định một tập lệnh npm tùy chỉnh, một bí danh có thể gọi các mã nhị phân npm khác ...

bạn không muốn các bài kiểm tra thư viện của mình không thành công tùy thuộc vào thiết lập máy (mocha dưới dạng toàn cầu, phiên bản mocha toàn cầu, v.v.), cách sử dụng mocha cục bộ hoạt động đa nền tảng là:

node node_modules/.bin/mocha

npm đặt bí danh cho tất cả các mã nhị phân trong phần phụ thuộc của bạn vào thư mục đặc biệt đó. Cuối cùng, npm sẽ tự động thêm node_modules / .bin vào PATH khi chạy tập lệnh npm, vì vậy trong package.json của bạn, bạn chỉ có thể thực hiện:

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

và gọi nó bằng

npm test

1
+1, Tôi đã sử dụng mocha từ một thời gian trước đây, nhưng tôi không nhận ra điều đó. Đây phải là câu trả lời được chấp nhận!
gihanchanuka

6
@ michael.kebe không, bạn không cần chỉ định đường dẫn đó để sử dụng mocha cục bộ, npm đã thêm "./node_modules/.bin" vào $ PATH, vì vậy nó sẽ sử dụng phiên bản cục bộ theo mặc định.
Benja

Tôi tin rằng lệnh nên nút node_modules / mocha / bin / mocha không nút node_modules / .bin / mocha
Mina Luke

3
@MinaLuke cũng hoạt động nhưng đó là một ý tưởng tồi, /node_modules/.bin/{module-binary-name}là nơi npm đặt các phím tắt cho các tệp nhị phân trong các tệp phụ thuộc của bạn, bạn không nên tham chiếu trực tiếp tệp trong các nguồn của tệp phụ thuộc, vì điều đó có thể bị hỏng trong phiên bản tiếp theo.
Benja

1
@DougBarbieri bắt rất hay, đó là một câu trả lời cũ, tôi sẽ cập nhật để đề cập đến npx, cảm ơn!
Benja

18

Sau khi đọc thêm, và xác nhận từ Linus G Thiel ở trên, tôi thấy tôi chỉ đơn giản là phải,

  • Hạ cấp xuống Node.js 0.6.12
  • Và một trong hai,
    • Cài đặt Mocha trên toàn cầu
    • Thêm ./node_modules/.binvào của tôiPATH

4
Tôi đã cài đặt nút 0.8.12 và mocha trên toàn cầu và cục bộ (cho các dự án khác nhau) và chúng đang hoạt động. Vì vậy, không cần phải hạ cấp nút. Đối với mocha được cài đặt cục bộ, chỉ cần đảm bảo PATH của bạn được đặt như trên hoặc gọi nó trực tiếp từ script của bạn (Makefile hoặc thẻ "scripts").
Qichao Dong,

1
Tôi đã cài đặt Mocha cục bộ và toàn cầu nhưng không tìm thấy nó trong đường dẫn (Win8). Tôi phải thêm thủ công thư mục './node_modules/.bin' liên quan đến dự án của tôi vào PATH của tôi, khởi động lại bảng điều khiển sau đó nhập 'mocha' sẽ hoạt động. Không phải là lý tưởng, nhưng là một hack nhanh chóng để làm cho nó hoạt động. Có lẽ nếu bạn có một vị trí cấp cao nhất để cài đặt mocha cục bộ, thì hãy liên kết với PATH đó để bạn có thể sử dụng nó ở nơi khác.
Ali

1

Cho cửa sổ :

Package.json

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

sau đó chạy lệnh

npm run test

1

Trong khi cài đặt các mô-đun nút cho mocha, tôi đã thử các lệnh dưới đây

  • cài đặt npm
  • npm cài đặt mocha
  • npm install --save-dev mocha
  • npm cài đặt mocha -g # để cài đặt nó trên toàn cầu

và khi chạy hoặc thực hiện kiểm tra mocha mà tôi đang thử

  • kiểm tra mocha
  • chạy thử nghiệm npm
  • kiểm tra mocha kiểm tra \ index.test.js
  • kiểm tra npm

nhưng tôi gặp lỗi dưới đây là:

'Mocha' không được nhận dạng là lệnh nội bộ hoặc lệnh bên ngoài

Vì vậy, sau khi thử mọi thứ, bạn chỉ cần đặt đường dẫn đến các biến môi trường trong Biến hệ thống là:

C: \ Program Files \ nodejs \

va no đa hoạt động :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.