Firebase Functionsのエミュレーターにてエラーが発生
Firebase FunctionsのエミュレーターにReact Native側から接続して関数を呼び出そうとした時に、not-found
というエラーが出力されていました。原因を探ろうとfirebase-debug.logを確認してみると、次のようなログが記録されていました。
[error] ⬢ functions: Failed to load function definition from source: FirebaseError: Error occurred while parsing your function triggers.
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/auth/auth' is not defined by "exports" in /Users/***/**/node_modules/firebase-admin/package.json
at new NodeError (node:internal/errors:371:5)
at throwExportsNotFound (node:internal/modules/esm/resolve:440:9)
at packageExportsResolve (node:internal/modules/esm/resolve:692:3)
at resolveExports (node:internal/modules/cjs/loader:482:36)
at Function.Module._findPath (node:internal/modules/cjs/loader:522:31)
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:919:27)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (/Users/**/*.js:16:16) {"metadata":{"emulator":{"name":"functions"},"message":"Failed to load function definition from source: FirebaseError: Error occurred while parsing your function triggers.\n\nError [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/auth/auth' is not defined by \"exports\"...
エラーの原因
ログを確認して調べてみると、原因は次のインポートらしいことが判明しました。
import { Auth } from 'firebase-admin/lib/auth/auth';
問題の解決方法
上記の部分を次の内容に取り替えてみました。
import type { auth } from 'firebase-admin';
そして、auth.Auth
を使ってAuth
クラスを参照するように修正しました。
private auth: auth.Auth | undefined = undefined;
constructor(@inject('Auth') auth: auth.Auth) {
this.auth = auth;
}
そして、ビルドされたファイルが格納されるlibディレクトリを削除した後に、再ビルドを行いました。
yarn build && GOOGLE_APPLICATION_CREDENTIALS='./secrets/google-services.json' firebase emulators:start
結果、この問題については解決することができました。(この直後、これとは関係のないエラーで悩まされることにはなりましたが・・・)
参考にした記事