1. ホーム
  2. node.js

[解決済み] Node.js のテストモジュールである Mocha のインストールと実行はどのように行うのですか?インストール後、"mocha: command not found "と表示される。

2023-01-24 19:13:27

質問

私は モカ を期待どおりに動作させることができず、ドキュメントどおりと言いたいところですが、実際に動作させるためのドキュメントがあまりない(ように見える)ためです。

を使用してインストールしました。 npm (グローバルとローカルの両方) を使用してインストールしましたが、実行すると毎回、次のようになります。

$ mocha
mocha: command not found

OK、それで、私はそれが私の 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)

どのようにすれば、1つのコマンドでテストを実行することができますか? 誓い はさせてくれるようですが、Mochaの方が良いと聞いていますが、どうしても正しく動作させることができません。

また、3回目の試行で上記のようなエラーが出たことについて、何かご意見はありますか?

編集してください。

走ってます。

  • Ubuntu 11.10 64 ビット
  • Node.js 0.7.5
  • npm 1.1.8
  • mocha 0.14.1
  • 0.6.0にすべき

どのように解決するのですか?

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

npx mocha <args>

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

これは、ローカルにインストールされたmochaから実行可能な"mocha"コマンドを自動的に選びます(常に正しいものがあなたや他の人によって常に使われるように、開発依存としてそれを追加してください)。

mochaをインストールしていない場合、このコマンドは自動的に最新版を取得して使用することになるので注意が必要です。これは一部のツール(たとえばscaffoldersなど)にとっては素晴らしいことですが、特定のバージョンに固定したいような依存関係には最も推奨できないかもしれません。

npx の詳細はこちらをご覧ください。 をご覧ください。


さて、mochaを直接起動するのではなく、カスタムnpmスクリプト、つまり他のnpmバイナリを起動するようなエイリアスを定義したい場合ですが...。

マシンの設定(mocha as global, global mocha version, etc.)によってライブラリのテストが失敗しないように、クロスプラットフォームで動作するローカルのmochaを使用する方法です。

node node_modules/.bin/mocha

npmは、依存関係にあるすべてのバイナリのエイリアスをその特別なフォルダに置きます。 最後に、npmはnpmスクリプトを実行するときに、node_modules/.binを自動的にPATHに追加するので、package.jsonの中で、ちょうどそうすることができます。

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

で起動し

npm test