2013-11-23 1 views
16

나는 항상 npm test 명령을 사용하여 package.jsonscripts : {test : ...} 섹션에있는 내용을 시작한다고 생각했습니다. 하지만 작동하지 않을 때 이상한 버그가 있습니다."npm test"는 어떻게 작동합니까?

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

그러나 모든 : 내가 터미널에서 npm test 입력 테스트를 실행하려고이 오류가 있었을 때

그래서, package.json

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

을에서 설정의이 작품이 단지 mocha tests/spec.js을 입력하면 OK입니다. 왜 그런 아이디어가 있니?

업데이트 : 사령관를 설치하려고했는데 내가 모듈 '글로브'를 찾을 수 없습니다 오류 했다

. 글로브를 설치 한 후 나는 오류가 있습니다 '../'

를 모듈을 찾을 수 없습니다를하지만 이러한 오류를 가지고 mocha tests/spec.js를 실행할 때 왜 모든 것이 OK입니다 왜 실제로 질문은?

+1

파일 시스템에 지휘관은 어디에 설치되어 있습니까? – rninty

+0

package.json의 scripts.test 등록 정보에 지정된 명령을 호출하지만 PATH와 같은 특정 환경 변수도 설정하므로 node_modules 디렉토리에만 존재하지만 전역 적으로 설치되지 않은 명령을 참조 할 수 있습니다. – Brandon

+0

package.json과'npm install'에 지휘관을 추가했는지 확인하십시오.) –

답변

10

두 버전의 mocha가 설치되어있을 수 있습니다. 하나는 전역으로 (npm install -g mocha)이고 다른 하나는 손상된 것으로 보입니다. npm run-script <name>이나 npm test 또는 npm start 같은 정의 바로 가기 중 하나

당신이 npm를 통해 스크립트를 실행

는, 현재의 패키지 디렉토리의 bin 디렉토리 경로의 전면에 배치됩니다. 패키지의 경우 ./node_modules/.bin/ 일 수 있으며 패키지의 mocha 실행 스크립트에 대한 링크가 포함되어 있습니다. 모든 종속 당신에게 모카의 작업 로컬 복사본을 얻어야한다

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

(사령관 등 :

당신은 아마 지역 모카을 제거하고 --save-DEV로 다시 설치하여이 문제를 해결할 수 있습니다 .)가 설치되었습니다.

+0

고마워요! 'npm help test'는 '패키지의 "test"스크립트가 제공된 경우이 스크립트를 실행하지만 테스트 "script"가 파일 시스템에있는 곳을 말하지 않습니다! "현재 패키지 디렉토리의'bin' 디렉토리에 있습니다. 여기서 말한 것처럼! –