動作環境について
デスクトップのWindows環境と、ラップトップのChromeOS(CrostiniでDebianが動作)環境の2種類で開発していた。Nodejsのバージョンはどちらもv20.22.0
経緯
理由は分からないが、あるプロジェクトではnpxコマンドでfirebaseエミュレーターを起動させる構成になっていた。そしてなぜかWSLではエミュレーターが動いたのにCrostini側でエラーが発生して起動しないという問題が発生。
npx firebase emulators:start --export-on-exit='./.emulator' --import='./.emulator'
npm ERR! could not determine executable to run
雑に訳すと「お前が入力したコマンドは実行できるように見えない」みたいな感じだと思われる。
原因:パッケージ名とコマンドが揃っていない。
エラーメッセージで検索するとすぐに情報が見つかった。
実行したいコマンドとパッケージ名が一致しない場合は、--packageまたは-pで対象のnpmパッケージを指定する必要があります。
確かにパッケージ名は"firebase-tools"なのに対し、コマンドは"firebase"なのでパッケージ名とコマンド名が違う。
npx --package firebase-tools firebase emulators:start --export-on-exit='./.emulator' --import='./.emulator'
なのでパッケージ名を指定するとエミュレーターが起動した。オプション無しだとSDK側を呼び出していたのではと思われるがよくわからない。