突然 'next' is not recognized as an internal or external command... と言われるようになった
一時的に解決した方法
- VSCode の全ての拡張を一度無効化する
- 無効化状態で問題が発生しないことを確認する
- 拡張機能をもとに戻す
- 解決
原因と解決
Python > Terminal: Activate Environment のチェックを外したところ、Python 拡張を有効にしても PATH がぶっ壊れなかった!
原因判明&解決!!
VSCode 使って、 pnpm dev
で next dev
を実行しようとしたら、今まで普通にできたのに突然
> next dev
'next' is not recognized as an internal or external command,
operable program or batch file.
ELIFECYCLE Command failed with exit code 1.
と言われてしまった。直前にやった作業といえば、拡張機能をアップデートして VSCode を再読み込みしたことくらい。
VSCode 再起動、PC 再起動したが変わらず。
pnpm
, node
, fnm
(nodeのバージョン管理) コマンドは正常に応答するのに、VSCode からだと謎に '~~~' is not recognized as an internal or external command,
となってしまう。
PATH がぶっ壊れているのかなと思って、VSCode ではなく Windows Terminal から開いて pnpm dev
するとなぜか普通に実行できた。
VSCode で、pnpm next
は効くけど pnpm dev
だと next
がないと言われることに気づいた。
Node.js: v18.18.0
pnpm: 8.15.4
corepack: 0.19.0
VSCode: 1.87.0
corepack
がめちゃ古かったのでアップデートした
npm install -g corepack
0.25.2 になったが、問題は特に解消しなかった。
PowerShell では普通に実行できるのに VSCode だとだめになるのが意味がわからない。
$Env:PATH
を見てみても同じ PATH を使っている。
-
pnpm setup
の実行 (PNPM_HOME
の設定) & PC 再起動
特に直らず
つい最近まで、ほんの数時間前まで動いていたのに謎のエラーが出るのマジで意味がわからなくて困っている...
直前にやったことといえば、git lfs uninstall
して git lfs install
したこと、biome
とかの VSCode 拡張のアプデがあったのでアップデートしたことくらい...
Windows Terminal の PowerShell から直接実行すると普通に動くのもマジで意味がわからない
VSCode の何かしらの設定がぶっ壊れているような気がするのだが、それがなんなのか全くわからない。
とりあえず現状は Windows Terminal から実行するようにして一時的に対処する。
いつのまにか直っていたらいいな...
なぜだかわからないが、他のワークスペースだと普通に pnpm dev
ができる。
$Env:PATH
を確認してみたら、問題が発生するプロジェクトでのみやたらと長ったらしいものが出力されていて、VSCode を再起動しようが何しようが直らなかった。
VSCode の PATH が特定のワークスペースでのみ壊れる現象があるのかなと思って調べていたがヒットせず...
ただ、VSCode の issue 報告テンプレートに「すべての拡張機能を無効化した状態でも発生しますか?」みたいな欄を見つけて、たしかに全て無効化は試したことなかったので試してみようということにした。
これを実行してリロードし、すべての拡張が無効化されている状態では正常に動作した!!
その後、拡張機能の無効化をもとに戻しても普通に直った状態が維持されていた。
VSCode 再起動しても PC 再起動しても node_modules 削除しても全然直らなくて、特定のプロジェクトでしか発生しないという問題が、全拡張を一度無効化することで直ってしまった。
詳細な原因はわからずじまいだったか、なにか PATH に触っている拡張が悪さしていたのだろうか...
今回の件とはちょっと違うけど、入れてるけど全然使ってない拡張が増えて把握しきれてないから定期的に確認しようかなと思ったりした...
再発した。
今度は Next.js のプロジェクトではなく Stable Diffusion Web UI のプロジェクトだった。
前回、何かの拡張機能のせいだとはわかったので、今回はどの拡張機能が悪さしているのかを調べてみた。
結論から言うと、 Microsoft の Python 関係の拡張を無効化したところ PATH がもとに戻った。
このうちのどれかが悪い。これらをまとめて無効化してしまったので、具体的にどれが悪いのかはわからない... 今度また発生したら調べてみる。
有効化したらまたPATHがぶっ壊れたので、比較したところ 「Python」拡張がだめだった。
新しくVSCode内でターミナルを起動すると、
stable-diffusion-webui-forge on main [!] is 📦 v0.0.0 via v20.11.1 via 🐍 v3.10.13 via 🅒 sdwebui
❯ & python c:\Users\hoge\.vscode\extensions\ms-python.python-2024.2.1\pythonFiles\printEnvVariablesToFile.py c:\Users\hoge\.vscode\extensions\ms-python.python-2024.2.1\pythonFiles\deactivate\powershell\envVars.txt
が先頭で実行されていることがわかった。
レポを見た感じ、環境変数ごにょごにょやっててこいつが悪さしてそうな香りがする。