Firebase Admin SDK 从 TypeScript 初始化失败

Jay*_*ell 5 node.js firebase typescript firebase-admin angular

我正在尝试在我的 TypeScript (Nest.js) 应用程序中导入 Firebase Admin SDK。

let serviceAccount = require("../../creds.json");
console.log(serviceAccount);

const firebase = require("firebase");
firebase.initializeApp(environment.firebase);

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "projectid"
});
Run Code Online (Sandbox Code Playgroud)

但是当我尝试构建应用程序时,出现以下错误。

ERROR in ./node_modules/@google-cloud/firestore/src/v1beta1/firestore_client.js
Module not found: Error: Can't resolve './firestore_client_config' in '/home/jaybell/trellis-server/trellis/node_modules/@google-cloud/firestore/src/v1beta1'
 @ ./node_modules/@google-cloud/firestore/src/v1beta1/firestore_client.js 28:17-53
 @ ./node_modules/@google-cloud/firestore/src/v1beta1/index.js
 @ ./node_modules/@google-cloud/firestore/src/index.js
 @ ./src/server/main.server.ts

ERROR in ./node_modules/google-gax/lib/operations_client.js
Module not found: Error: Can't resolve './operations_client_config' in '/home/jaybell/trellis-server/trellis/node_modules/google-gax/lib'
 @ ./node_modules/google-gax/lib/operations_client.js 30:17-54
 @ ./node_modules/google-gax/index.js
 @ ./node_modules/@google-cloud/firestore/src/v1beta1/index.js
 @ ./node_modules/@google-cloud/firestore/src/index.js
 @ ./src/server/main.server.ts

ERROR in ./node_modules/google-gax/index.js
Module not found: Error: Can't resolve './package' in '/home/jaybell/trellis-server/trellis/node_modules/google-gax'
 @ ./node_modules/google-gax/index.js 65:18-38
 @ ./node_modules/@google-cloud/firestore/src/v1beta1/index.js
 @ ./node_modules/@google-cloud/firestore/src/index.js
 @ ./src/server/main.server.ts
Run Code Online (Sandbox Code Playgroud)

我尝试搜索 admin sdk 和 google-cloud firestore 包之间的任何连接,但没有显示任何内容。我尝试包含 firestore 库并对其进行初始化,但仍然出现此错误。

我完全按照 firebase 文档中的方式包含了 admin sdk

import * as admin from 'firebase-admin';
Run Code Online (Sandbox Code Playgroud)

安装后

yarn add firebase-admin
Run Code Online (Sandbox Code Playgroud)

我知道 firebase admin sdk 可以与 firestore 通信,但不确定为什么它会在初始化期间抛出此错误。

它可能与我的项目有关,包括编译在一起的前端和后端组件,以及为角度站点提供服务的节点服务器。firebase admin sdk 是否与前端一起编译可能导致此错误?

有什么想法吗?

Jay*_*ell 1

好吧,我想我可能已经解决了我自己的问题。

问题是 firebase-admin-sdk 包含在构建过​​程中并导致其失败。

修复方法是:安装https://github.com/liady/webpack-node-externals 并将其添加到我的 webpack.config.ts 文件中并排除 node_modules 文件夹。

然后我必须通过 gcloud 进行身份验证,说明如下: 无法加载默认凭据?(Node.js Google 计算引擎教程)

现在构建和服务工作正常了。