💥

Vitestが`crypto is not defined`と言って落ちるときは

2024/04/02に公開

TL:DR;

Vitest拡張機能(vitest.explorer)の"vitest.nodeExecutable"の項目を確認しましょう.

何があったの

最近入ったプロジェクトでVitestとVSCodeを使うことになりました.

ワイ「VSCode使うん久しぶりやな...せや!拡張機能でVitestのランナー入れたるで! Vitest...っと」

https://marketplace.visualstudio.com/items?itemName=vitest.explorer

ワ「お!すぐ見つかったわ! VSCodeはこれがあるからええな」


ワ「ほなテストするで~」

Vitest「crypto is not defined」

ワ「テスト落ちてまんがな!こらきっとテストケースが」

Github Actions「いや 動いとるで」

ワ「なんでや...てか落ちとるん最初のケースだけやんけ」

ワ「pnpm run testはどないや」

ターミナル「全部Greenや」

ワ「てことは,Vitest拡張機能,お前か...?」

Vitest「"vitest.nodeExecutable"になんも書いてなかったらVSCode内蔵のNode.js使うで」

ワ「VSCode内蔵のNode.jsってなんや」

VSCode「これや(v18.18.2)」

ワ「これやんけ」

Node.js v18ではWeb crypto APIはまだunstableなので,うまく動かなかったということです.[1] おしまい.

教訓

  • 早いところpnpm run testして原因の特定をすればよかった
    • というかNodeのバージョン違いという発想が頭の中に無かった...
    • VSCodeの内蔵Node.jsってなんやねん
  • 拡張機能の設定項目にはある程度目を通そう

GitHub ActionsでCI環境が整っていたことが原因特定の一助になりました.ありがたい限りです.

宣伝

Pulsateでは開発メンバーを募集しています.興味がございましたら,ぜひご参加ください.

メンバー募集記事

https://twitter.com/m1s2r8/status/1771822948564807935?s=20

脚注
  1. 依然1回目だけ律儀に落ちてた原因は不明のままです.解決したのでこれ以上調査する気も起きませんでした. ↩︎

GitHubで編集を提案

Discussion