グローバルにインストールされたバージョンのJestを実行するときにトリガーされたprocess.exit(1)
呼び出しは、奇妙なテスト結果になります-すべてのテストに合格した場合でも、プロセスはゼロ以外の終了コードを返し、その理由はすぐにはわかりません。
jest
がnpm test
割り当てられると(これはかなり一般的な規則です)、次のようになります。
Please run `npm install` to use the version of Jest intended for this project.
...
163 tests passed (163 total in 30 test suites, run time 3.292s)
npm ERR! Test failed. See above for more details.
明らかな詳細(「実行してください...」の行はエラーメッセージのようには見えません)や失敗したテストはないため、デバッグは厄介です。
推奨事項
getJest
完全に削除したいと思います。 npm install
を実行せずに非ローカルバージョンのJestを使用したい場合、パッケージがなぜ気にする必要があるのかわかりません。console.warn
を使用する必要があります。これは、テストが問題なく実行される可能性があるためです。警告は、出力がユーザーの意図を正確に反映していない可能性があることを示す十分な指標です。Error
をスローする必要があります-ノードの組み込みエラー処理は、 console.error
後にprocess.exit(1)
続くよりもはるかに明示的ですprocess.exit(1)
呼び出します-ローカルで定義された依存関係が欠落しているときにJestをグローバルに実行することができない場合は、そうすべきではありませんまったく実行されません。これを提起し、問題の詳細な説明をありがとうございます。 正直なところ、私はこのことについて自分自身で腹を立てており、それは間違いなくJestのテストスイートを扱うのを少し難しくしています。
とにかくJestがまだテストを実行することになった場合、これが現在機能している方法が意味をなさないことにも同意します。 ご不便をおかけして申し訳ございません。
プルリクエストを送信してもよろしいですか?
私の提案は次のとおりです。
process.exit(1)
削除します。process.on('exit', () => console.log(chalk.red('The error message ')))
実行すると、テスト実行の最後に、何かが適切ではないことを示す赤いメッセージが表示されます。これにより、間違ったバージョンのJestを使用できるようになります(重大な変更がある可能性があるため、お勧めしません)が、テストの実行は適切に終了し、下部にメッセージが出力されます。 どう思いますか?
@cpojerそれは私のために働きます、迅速な応答に感謝します! 間もなくPRを提出します
@mmcgahan @cpojerヤーンワークスペースmonorepo内の子パッケージ内でJestを実行すると、この致命的でないエラーが発生します。 jest
を探す方法が、monorepoルートに引き上げられているパッケージを処理していないため、エラーが表示されているように感じますか?
最も参考になるコメント
@mmcgahan @cpojerヤーンワークスペースmonorepo内の子パッケージ内でJestを実行すると、この致命的でないエラーが発生します。
jest
を探す方法が、monorepoルートに引き上げられているパッケージを処理していないため、エラーが表示されているように感じますか?