从 TypeScript 初始化 Firebase Admin SDK 失败
Posted
技术标签:
【中文标题】从 TypeScript 初始化 Firebase Admin SDK 失败【英文标题】:Firebase Admin SDK initialization failed from TypeScript 【发布时间】:2018-05-23 18:36:42 【问题描述】:我正在尝试在我的 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"
);
但是当我尝试构建应用程序时,我收到以下错误。
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
我试图搜索 admin sdk 和 google-cloud firestore 软件包之间的任何连接,但没有任何显示。我尝试包含 firestore 库并对其进行初始化,但仍然出现此错误。
我包含了与 firebase 文档完全相同的 admin sdk
import * as admin from 'firebase-admin';
安装后
yarn add firebase-admin
我知道 firebase admin sdk 可以与 firestore 通信,但不确定为什么它会在初始化期间抛出此错误。
这可能与我的项目有关,包括一起编译的前端和后端组件,服务于 Angular 站点的节点服务器。 firebase admin sdk 是否与前端一起编译可能导致此错误?
有什么想法吗?
【问题讨论】:
【参考方案1】:好的,我想我可能已经解决了我自己的问题。
问题在于 firebase-admin-sdk 被包含在构建过程中并导致它失败。
修复是: 安装https://github.com/liady/webpack-node-externals 并将其添加到我的 webpack.config.ts 文件中并排除 node_modules 文件夹。
然后我必须通过 gcloud 进行身份验证,此处的说明: Could not load the default credentials? (Node.js Google Compute Engine tutorial)
现在构建和服务工作正常。
【讨论】:
【参考方案2】:你丢失了添加到 webpack json
扩展以进行解析
module.exports =
...
resolve:
extensions: ['.ts', '.js', '.json']
...
;
【讨论】:
以上是关于从 TypeScript 初始化 Firebase Admin SDK 失败的主要内容,如果未能解决你的问题,请参考以下文章
Firebase + Typescript,无法从用户对象中获取 accessToken?
如何使用 Typescript 从 firebase-admin 导入 FieldValue?
使用 Angular2、angularfire2 和 Typescript 从 Firebase 对象中获取数据
如何让 TypeScript 从 node_modules 捆绑第 3 方库?
如何使用以 TypeScript for Firebase Realtime 数据库编写的云函数从 onCreate 触发以外的节点获取数据?