Mocha: モジュール「tap」が見つかりませんが、tapが依存関係としてリストされていません

作成日 2017年11月03日  ·  15コメント  ·  ソース: mochajs/mocha

説明

mocha 4.0.1では、バックエンドノードコードのテストを記述しています。 npm run testを実行すると、「tap」モジュールが見つからないというエラーがスローされます。 依存関係を確認すると、TAPはリストされません

question

最も参考になるコメント

それは私も遭遇するものです。 これは、node_modulesからテストを実行するためだと思います。
mocha \"./{,!(node_modules)/**/}*.test.js\"*.test.jsファイルを実行したい場合)を実行することで、node_modulesからのテストの実行を防ぐことができます

全てのコメント15件

これを試して:

npm la tap

そのコマンドを使用して、タップに依存する深度を特定できます

ただし、 npm i実行しなかった場合を除き、依存関係ツリーに含まれていないものがrequireタップされている可能性が高くなります。 しかし、それはおそらくプロジェクトコードのどこかにあるので、テキスト検索の単純な問題であるはずです。 そして、それがタップを呼び出すコードであり、そこにあるはずの場合、実際にインストールする(そしてdevDependenciesに記録する)のはnpm i --save-dev tap問題になります。

私もこれを経験し、どこにも要件としてタップを見つけることができなかったにもかかわらず、 npm i --save-dev tapは問題を修正しました。 たぶんmocha 5.0.1はそれを依存関係として追加する必要がありますか?

それは私も遭遇するものです。 これは、node_modulesからテストを実行するためだと思います。
mocha \"./{,!(node_modules)/**/}*.test.js\"*.test.jsファイルを実行したい場合)を実行することで、node_modulesからのテストの実行を防ぐことができます

@nchevobbeそうです、そうです-ありがとう!

ありがとう@nchevobbe! あなたが来るまでそれは意味がありませんでした:)

@nchevobbeあなたが一日を救った兄弟に感謝します:smile:

ありがとうニコラス..完璧な解決策

それは私のために働いたありがとう

ありがとう@nchevobbe

私のようにこれを見つけた人のために...

TLDR:過度に攻撃的なfind (そして@nchevobbeが言及したのと同じ問題)

私のpackage.lock scripts.testは次のようになりました

  • "NODE_ENV=test mocha --compilers js:babel-core/register $(find . \\( -name '*.spec.js' -or -name '*.test.js' \\) -print) $(find ./test/ -name '*.js' -print)"

これは、 node_modules内のファイルを含む、すべての*.spec.jsファイルと*.test.jsファイルを検索します。これらのテストは通常​​、 node_modulesインストールされたパッケージにインストールされていない開発者の依存関係に依存します。

私の解決策は、テストコマンドからnode_modulesを除外すること

  • "NODE_ENV=test mocha --compilers js:babel-core/register $(find . \\( -name '*.spec.js' -or -name '*.test.js' \\) -print | grep -v node_modules) $(find ./test/ -name '*.js' -print | grep -v node_modules)"

@nchevobbeは魔法のように機能します!

_すべて_テスト(「* .spec.js」や「* .test.js」など)は、「test」ディレクトリ(またはその中のサブディレクトリ)にある必要があります。 findコマンドは、そのように編成する場合は完全に不要です。

これを想定すると、Mochaの最近のバージョンのコマンドラインは次のようになります。

# Using Babel 6...
$ NODE_ENV=test mocha --require babel-core/register 'test/**/*.js'

# Using Babel 7...
$ NODE_ENV=test mocha --require @babel/register 'test/**/*.js'

この戦略の欠点の1つは、すべてのファイルが一目でテストされていることを視覚的に確認することが難しいことです。 テスト対象のファイルのすぐ隣にテストファイルを配置すると、それが簡単になります。

ええと、コードと対応するテストの両方を異なるディレクトリに表示する2つのタブを備えたエディタウィンドウを用意するのは難しいことではありません。 私は通常このように私のものを整理します:

| -- myproj
     |-- /lib
         {source code}
     |-- /test
         |-- /unit
             |-- /fixtures
         |-- /e2e
             |-- /fixtures

しかし、あなたのスタイルを組み込むことは、かなり些細なコマンドラインの変更です...

$ NODE_ENV=test mocha --require @babel/register 'lib/**/*.spec.js' 'test/**/*.js'
このページは役に立ちましたか?
0 / 5 - 0 評価