web-dev-qa-db-ja.com

"npm test"(jest)を実行しているとき、STDOUTへのconsole.logはありません

私が知っていることから、console.log()は、スクリプトの実行時に、コンソールのSTDOUTに問題なく出力されるはずです。

しかし、私の場合、シェルから_npm test_を発行するときにJestを実行するようにNPMを構成しており、テストファイル内のconsole.log()が画面に何も出力しません。 process.stdout.write()も使用しようとしましたが、_npm test_を実行してもカスタム出力が得られません。

テストスクリプトの内容をデバッグするにはどうすればよいですか?それがNode、NPM、またはJestの問題なのかわかりません。 Jest issue があります。これは私のものに似ていますが、まだ解決できず、単純な文字列を出力できません。残りのJest出力は通常どおりエコーされます。

誰かが同様の問題を経験しましたか?

EDIT 1:_npm test -- --runInBand_を実行しようとしましたが、ログが表示されません。

注:コマンドを繰り返し実行しようとすると、ログを見ることができますが、これは上書きされます/次のJest出力の残りによって非表示。

15
Kamafeather

問題は何年も続いているので、リンクされた問題から...

この問題を修正する alphaリリースのプルリクエスト があります。過去数時間で最後の精製が行われているようです(Githubの問題のリンクを参照)。

しかし、私は私の最も単純なケースで機能する解決策を見つけました:

  • _npm test -- --verbose=true_を実行するだけで、ログが魔法のように表示されます。

これはすべての場合に修正されません。多分async/multi-thread/etcにはまだ問題があるでしょう(あなたの経験を報告してください、そうすれば答えを更新できます);たとえば、ログの後にprocess.exit(1)を追加すると、ログは再び非表示になります。

process.exit()が実行される前に(適切なタイミングで)_ctrl + c_を押すと、ログが実際に存在し、上書きされていることが示されます。

私は答えをニュースで更新しますが、おそらくこれは他の人がNode/NPM/Jestセットアップを開始するのに役立ちます!

4
Kamafeather

これはきれいではありませんが、運が良かったので、修正が公開されるまでお役に立てば幸いです。上書きされるログの後に、追加のnewlinesを記録してください。

console.log('I want to be seen!');
console.log('\n\n\n\n');
7
helloitsjoe