Node.jsテストモジュールであるMochaをどのようにインストールして実行しますか?インストール後に「mocha:コマンドが見つかりません」を取得する


89

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)

単一のコマンドでテストを実行するにはどうすればよいですか?誓いはあなたを許しているようですが、私はモカがより良い選択であると聞きました、私はそれを正しく機能させるようには思えません。

そして、私が3回目の試みで上に出たエラーについて何か考えはありますか?

編集:

私は走っています、

  • 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。*をサポートするようにモカが更新されていない可能性があります。あなたの廃止の警告について、existsそしてexistsSyncから移動されたpathfsノード0.7.1で。
Linus Thiel

Node.js 0.6.12にダウングレードし、PATHに "./node_modules/.bin"を追加しました。すべて正常です。
スティーブンメルローズ

回答:


177

npm 5.2.0以降、次のコマンドを実行すると、npmに含まれる新しいコマンド "npx"により、これがはるかに簡単になります。

npx mocha <args>

注:オプションの引数は、実行中のコマンド(この場合はモカ)に転送されます。

これにより、ローカルにインストールされた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 2015

6
@ michael.kebeいいえ、ローカルモカを使用するためにそのパスを指定する必要はありません。npmはすでに「./node_modules/.bin」を$ PATHに追加しているため、デフォルトでローカルバージョンを使用します。
ベンジャ2015年

コマンドはノードnode_modules / .bin / mochaではなくノードnode_modules / mocha / bin / mochaである必要があると思います
Mina Luke

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をグローバルにそしてローカルに(異なるプロジェクトのために)インストールしていて、それらは動作しています。したがって、ノードをダウングレードする必要はありません。ローカルにインストールされたモカの場合、PATHが上記のように設定されていることを確認するか、スクリプト(Makefileまたは "scripts"タグ)から直接呼び出します。
Qichao Dong

1
Mochaをローカルおよびグローバルにインストールしましたが、パス(Win8)に見つかりませんでした。プロジェクトに関連する './node_modules/.bin'フォルダーを手動でPATHに追加し、コンソールを再起動して、 'mocha'と入力すると機能しました。理想的ではありませんが、動作させるための簡単なハックです。おそらく、mochaをローカルにインストールする最上位の場所がある場合は、そのPATHにリンクして他の場所で使用できるようにします。
2013


1

モカのノードモジュールをインストールするときに、以下のコマンドを試しました

  • npmインストール
  • npm install mocha
  • npm install --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.