2013-11-23 13 views
16

Tôi luôn nghĩ rằng lệnh npm test chỉ khởi chạy những gì tôi sẽ viết trong package.json bên trong tập lệnh: {test: ...} phần. Nhưng tôi có lỗi lạ khi nó không hoạt động.Thử nghiệm "npm" hoạt động như thế nào?

Vì vậy, tôi có mảnh này config trong package.json

"scripts": { 
    "start": "node index.js", 
    "test": "mocha tests/spec.js" 
} 

Khi tôi cố gắng chạy thử nghiệm tôi gõ npm test trong thiết bị đầu cuối và có lỗi này:

module.js:340 
    throw err; 
     ^
Error: Cannot find module 'commander' 

Nhưng tất cả mọi thứ là OK khi tôi chỉ nhập mocha tests/spec.js. Bất kỳ ý tưởng tại sao là điều đó?

UPDATE:

Tôi đã cố gắng để cài đặt chỉ huy và tôi đã có một lỗi Không thể tìm thấy mô-đun 'glob'. Sau khi cài đặt glob Tôi có Lỗi: Không thể tìm thấy mô-đun '../'

Nhưng trên thực tế câu hỏi là tại sao tôi có các lỗi này và tại sao tất cả mọi thứ OK khi chạy mocha tests/spec.js?

+1

Trình lệnh được cài đặt trong hệ thống tệp của bạn ở đâu? – rninty

+0

Nó gọi lệnh được chỉ định trong thuộc tính scripts.test của package.json, nhưng nó cũng thiết lập các biến môi trường nhất định, chẳng hạn như PATH để bạn có thể tham khảo các lệnh chỉ tồn tại trong thư mục node_modules của bạn, nhưng không được cài đặt trên toàn cầu. – Brandon

+0

Hãy chắc chắn thêm lệnh vào package.json của bạn và 'npm install':) –

Trả lời

10

Bạn có thể cài đặt hai phiên bản mocha: một phiên bản toàn cầu (npm install -g mocha) và một phiên bản cục bộ, có vẻ như bị hỏng.

Khi bạn chạy một kịch bản thông qua npm, hoặc là npm run-script <name> hoặc với một phím tắt được định nghĩa như npm test hoặc npm start, thư mục bin gói thư mục hiện tại của bạn được đặt ở phía trước của con đường của bạn. Đối với gói của bạn, có lẽ là ./node_modules/.bin/, chứa liên kết đến tập lệnh thực thi mocha của gói của bạn.

Bạn có thể sửa lỗi này bằng cách loại bỏ các mocha địa phương và cài đặt lại nó với --save-dev:

rm -rf node_modules/mocha npm install --save-dev mocha

Điều đó sẽ giúp bạn có được một bản sao địa phương làm việc của mocha với tất cả phụ thuộc của nó (chỉ huy vv .) Cài đặt.

+0

Cảm ơn! Tôi tìm thấy câu trả lời này bởi vì 'npm help test' nói:' Điều này chạy kịch bản "test" của gói, nếu được cung cấp.' nhưng không nói "" test "" script ở đâu trên hệ thống tập tin! Điều tốt để biết nó nằm trong thư mục 'bin' của thư mục gói hiện tại của tôi" như bạn nói ở đây! –

Các vấn đề liên quan