Firebase toolsがいきなりCIでコケるようになった
Firebase emulatorの以下のエラーの原因を考えてください。
node:internal/modules/cjs/loader:643 throw e; ^ Error: Cannot find module '/opt/hostedtoolcache/node/20.19.0/x64/lib/node_modules/firebase-tools/node_modules/sql-formatter/dist/cjs/index.cjs'
このエラーメッセージは、Firebase Emulatorを実行しようとした際に、特定のモジュールが見つからないことを示しています。具体的には、sql-formatter
モジュールのindex.cjs
ファイルが見つからないというエラーです。考えられる原因はいくつかあります。
-
モジュールのインストール不具合:
firebase-tools
が正しくインストールされていない、もしくはその依存関係であるsql-formatter
が正しくインストールされていない可能性があります。この場合、再インストールを試みるとよいでしょう。npm uninstall -g firebase-tools npm install -g firebase-tools
-
キャッシュの問題: npmのキャッシュが壊れている場合も考えられます。この場合、キャッシュをクリアした後に再インストールすることが有効です。
npm cache clean --force npm install -g firebase-tools
-
パスの問題: 環境によっては、モジュールが異なる場所にインストールされることがあります。この場合、環境変数やパスを確認し、正しい場所を参照するように設定する必要があります。
-
バージョンの不整合: 使用しているNode.jsのバージョンと
firebase-tools
が依存するライブラリのバージョンが合わない場合も問題が発生します。この場合、Node.jsを適切なバージョンに切り替えることを検討してください。 -
npmとは異なる方法でFirebase Emulatorを実行している: ホスティングなど特定の方法(DockerやCI/CDなど)で実行している場合、モジュールが正しくビルドされていないか、インストールされていない可能性があります。
これらの対策を行っても問題が解決しない場合は、Firebaseの公式ドキュメントや問題が報告されているGitHubリポジトリを参照し、類似の問題がないか確認するとよいでしょう。