Closed19

突然 'next' is not recognized as an internal or external command... と言われるようになった

ピン留めされたアイテム
PlatPlat

一時的に解決した方法

  1. VSCode の全ての拡張を一度無効化する
  2. 無効化状態で問題が発生しないことを確認する
  3. 拡張機能をもとに戻す
  4. 解決
ピン留めされたアイテム
PlatPlat

原因と解決

Python > Terminal: Activate Environment のチェックを外したところ、Python 拡張を有効にしても PATH がぶっ壊れなかった!

原因判明&解決!!

PlatPlat

VSCode 使って、 pnpm devnext 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 を再読み込みしたことくらい。

PlatPlat

VSCode 再起動、PC 再起動したが変わらず。

pnpm, node, fnm (nodeのバージョン管理) コマンドは正常に応答するのに、VSCode からだと謎に '~~~' is not recognized as an internal or external command, となってしまう。

PATH がぶっ壊れているのかなと思って、VSCode ではなく Windows Terminal から開いて pnpm dev するとなぜか普通に実行できた。

PlatPlat

VSCode で、pnpm next は効くけど pnpm dev だと next がないと言われることに気づいた。

PlatPlat

試してだめだったこと

  • node_modules 削除して pnpm i
  • pnpm store path を削除してキャッシュクリア [1]
  • VSCode の Package Manager 設定を auto から pnpm に変更 [2]
  • pnpm のアップデート (corepack prepare pnpm@latest --activate)
  • PowerShell の実行ポリシーの変更? [3]
脚注
  1. https://github.com/orgs/pnpm/discussions/4413 ↩︎

  2. https://stackoverflow.com/questions/71686054/how-to-fix-vscode-warning-module-not-installed-when-using-pnpm ↩︎

  3. https://github.com/pnpm/pnpm/issues/6057 ↩︎

PlatPlat

corepack がめちゃ古かったのでアップデートした

npm install -g corepack

0.25.2 になったが、問題は特に解消しなかった。

PlatPlat

PowerShell では普通に実行できるのに VSCode だとだめになるのが意味がわからない。

$Env:PATH を見てみても同じ PATH を使っている。

PlatPlat

つい最近まで、ほんの数時間前まで動いていたのに謎のエラーが出るのマジで意味がわからなくて困っている...

直前にやったことといえば、git lfs uninstallして git lfs install したこと、biome とかの VSCode 拡張のアプデがあったのでアップデートしたことくらい...

Windows Terminal の PowerShell から直接実行すると普通に動くのもマジで意味がわからない

PlatPlat

VSCode の何かしらの設定がぶっ壊れているような気がするのだが、それがなんなのか全くわからない。

とりあえず現状は Windows Terminal から実行するようにして一時的に対処する。

いつのまにか直っていたらいいな...

PlatPlat

なぜだかわからないが、他のワークスペースだと普通に pnpm dev ができる。

$Env:PATH を確認してみたら、問題が発生するプロジェクトでのみやたらと長ったらしいものが出力されていて、VSCode を再起動しようが何しようが直らなかった。

VSCode の PATH が特定のワークスペースでのみ壊れる現象があるのかなと思って調べていたがヒットせず...

PlatPlat

ただ、VSCode の issue 報告テンプレートに「すべての拡張機能を無効化した状態でも発生しますか?」みたいな欄を見つけて、たしかに全て無効化は試したことなかったので試してみようということにした。

これを実行してリロードし、すべての拡張が無効化されている状態では正常に動作した!!

その後、拡張機能の無効化をもとに戻しても普通に直った状態が維持されていた。

VSCode 再起動しても PC 再起動しても node_modules 削除しても全然直らなくて、特定のプロジェクトでしか発生しないという問題が、全拡張を一度無効化することで直ってしまった。

詳細な原因はわからずじまいだったか、なにか PATH に触っている拡張が悪さしていたのだろうか...

PlatPlat

今回の件とはちょっと違うけど、入れてるけど全然使ってない拡張が増えて把握しきれてないから定期的に確認しようかなと思ったりした...

PlatPlat

再発した。

今度は Next.js のプロジェクトではなく Stable Diffusion Web UI のプロジェクトだった。

前回、何かの拡張機能のせいだとはわかったので、今回はどの拡張機能が悪さしているのかを調べてみた。

結論から言うと、 Microsoft の Python 関係の拡張を無効化したところ PATH がもとに戻った。

このうちのどれかが悪い。これらをまとめて無効化してしまったので、具体的にどれが悪いのかはわからない... 今度また発生したら調べてみる。

PlatPlat

有効化したらまたPATHがぶっ壊れたので、比較したところ 「Python」拡張がだめだった。

PlatPlat

新しく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

が先頭で実行されていることがわかった。

レポを見た感じ、環境変数ごにょごにょやっててこいつが悪さしてそうな香りがする。

https://github.com/microsoft/vscode-python/blob/v2024.2.1/pythonFiles/deactivate/powershell/deactivate.ps1

このスクラップは2024/03/17にクローズされました