Node.js 테스트 모듈 인 Mocha를 어떻게 설치하고 실행합니까? 설치 후 "mocha : 명령을 찾을 수 없음"이 표시됨


90

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 비트
  • Node.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. 이것이 여러분의 환경에서 제대로 작동하지 않는다면 버그이거나 노드 0.7. *을 지원하도록 업데이트되지 않은 mocha 일 수 있습니다. 당신의 중단 경고에 대해서, exists그리고 existsSync에서 이동되었다 pathfs노드 0.7.1에서.
Linus Thiel 2012 년

나는 Node.js 0.6.12로 다운 그레이드하고 "./node_modules/.bin"을 내 PATH에 추가했으며 모든 것이 세상에 맞습니다.
Stephen Melrose 2012 년

답변:


178

npm 5.2.0부터 다음을 실행하면 훨씬 간단하게 npm에 포함 된 새로운 명령 "npx"가 있습니다.

npx mocha <args>

참고 : 선택적 인수는 실행중인 명령으로 전달됩니다 (이 경우 mocha).

이렇게하면 로컬에 설치된 mocha에서 실행 가능한 "mocha"명령이 자동으로 선택됩니다 (항상 개발자 종속성으로 추가하여 사용자와 다른 모든 사람이 항상 올바른 명령을 사용하도록합니다).

mocha를 설치하지 않은 경우이 명령은 자동으로 최신 버전을 가져와 사용합니다.이 명령은 일부 도구 (예 : 스캐 폴더)에 유용하지만 원하는 특정 종속성에 가장 권장되지 않을 수 있습니다. 특정 버전에 고정하십시오.

여기 에서 npx에 대해 더 읽을 수 있습니다.


이제 mocha를 직접 호출하는 대신 다른 npm 바이너리를 호출 할 수있는 별칭 인 사용자 지정 npm 스크립트를 정의하려는 경우 ...

머신 설정 (글로벌 모카, 글로벌 모카 버전 등)에 따라 라이브러리 테스트가 실패하는 것을 원하지 않습니다. 크로스 플랫폼에서 작동하는 로컬 모카를 사용하는 방법은 다음과 같습니다.

node node_modules/.bin/mocha

npm은 해당 특수 폴더에 대한 종속성의 모든 바이너리에 별칭을 넣습니다. 마지막으로 npm은 npm 스크립트를 실행할 때 자동으로 node_modules / .bin을 PATH에 추가하므로 package.json에서 다음을 수행 할 수 있습니다.

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

그리고 그것을 호출

npm test

1
+1, 예전부터 모카를 사용해 왔는데 몰랐습니다. 이것은 받아 들여진 대답이어야합니다!
gihanchanuka

6
@ michael.kebe 아니요, 로컬 mocha를 사용하기 위해 해당 경로를 지정할 필요가 없습니다. npm은 이미 $ PATH에 "./node_modules/.bin"을 추가하므로 기본적으로 로컬 버전을 사용합니다.
Benja 2015

나는 명령이되어야한다고 생각 노드 node_modules / 모카 / 빈 / 모카하지 노드 node_modules / .BIN / 모카
미나 누가 복음

3
@MinaLuke도 작동하지만 그것은 나쁜 생각입니다 .npm이 /node_modules/.bin/{module-binary-name}종속성의 바이너리에 대한 바로 가기를 넣는 곳입니다. 다음 버전에서 중단 될 수 있으므로 종속성 소스에서 파일을 직접 참조해서는 안됩니다.
Benja 2016 년

1
@DougBarbieri 좋은 캐치, 그것은 오래된 대답입니다, 나는 npx를 언급하도록 업데이트 할 것입니다, 감사합니다!
Benja

18

추가로 읽고 위의 Linus G Thiel의 확인을받은 후,

  • Node.js 0.6.12로 다운 그레이드
  • 그리고
    • Mocha를 글로벌로 설치
    • 추가 ./node_modules/.bin로 내PATH

4
나는 0.8.12 노드와 mocha를 전역 적으로 그리고 로컬로 설치했으며 (다른 프로젝트를 위해) 작동하고 있습니다. 따라서 노드를 다운 그레이드 할 필요가 없습니다. 로컬에 설치된 mocha의 경우 PATH가 위와 같이 설정되어 있는지 확인하거나 스크립트 (Makefile 또는 "scripts"태그)에서 직접 호출하십시오.
Qichao Dong

1
Mocha를 로컬 및 글로벌로 설치했지만 경로 (Win8)에서 찾을 수 없습니다. 내 프로젝트와 관련된 './node_modules/.bin'폴더를 PATH에 수동으로 추가하고 콘솔을 다시 시작한 다음 'mocha'를 입력하면 작동합니다. 이상적이지는 않지만 빠르게 작동하는 방법입니다. 아마도 모카를 로컬로 설치할 최상위 위치가 있다면 다른 곳에서 사용할 수 있도록 해당 PATH에 연결하십시오.
알리

1

Windows의 경우 :

Package.json

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

그런 다음 명령을 실행하십시오.

npm run test

1

mocha에 대한 노드 모듈을 설치하는 동안 아래 명령을 시도했습니다

  • npm 설치
  • npm 설치 모카
  • npm 설치 --save-dev mocha
  • npm install mocha -g # 전역 적으로 설치

모카 테스트를 실행하거나 실행할 때

  • 모카 테스트
  • npm 실행 테스트
  • 모카 테스트 test \ index.test.js
  • npm 테스트

하지만 다음과 같은 오류가 발생했습니다.

'모카'는 내부 또는 외부 명령으로 인식되지 않습니다.

그래서 모든 것을 시도한 후에 시스템 변수 아래의 환경 변수에 대한 경로를 다음과 같이 설정하는 것으로 나타났습니다.

C : \ Program Files \ nodejs \

그리고 그것은 작동했습니다 :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.