(※検索するとcross-env入れろとか、ちょっと荒っぽい対策だったので原因を書きました)
前書き
- Next.jsのデバッグ方法を調べると、
package.json
のscripts
を下記のように書き換えて実行すると書いてあります。
"scripts": {
"dev": "NODE_OPTIONS='--inspect' next dev",
ところが、Windows(VSCode)で実行すると、下記のようなエラーが出て?となります。
原因
npmがscripts
を実行する際、「コマンドプロンプト(cmd.exe)」を利用するように設定されているからです。
コマンドプロンプトでは、NODE_OPTIONS='--inspect' next dev
という記述は、構文エラーになります。
- Windowsの場合、例えgit-bashを利用していても、npmの初期設定「cmd.exe」が使われる
npmがscripts
実行で利用するシェルの確認方法
>npm config get script-shell
C:\WINDOWS\system32\cmd.exe
対策①(コマンドプロンプトが理解できる記述に変更する)
一番簡単な対応方法は、cmd.exeが理解する構文に変更するのが早いです。
(setで環境変数の設定をして、&& でコマンドを続けて実行)
set NODE_OPTIONS=--inspect && next dev
対策②(シェルをgit-bashに変更する)
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
(シェルをbashにすると、何か別の問題が発生した(詳細は失念)ので、①をお勧めします)