我正在尝试在我的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库并初始化它,但是这个错误仍然显示出来。
我将管理员sdk与
中的firebase文档完全相同import * as admin from 'firebase-admin';
用安装后
yarn add firebase-admin
我知道firebase管理员sdk可以与firestore通信,但不确定为什么在初始化期间会抛出此错误。
它可能与我的项目有关,包括编译在一起的前端和后端组件,服务于角度站点的节点服务器。是否可以使用前端编译firebase管理员sdk可能导致此错误?
有什么想法吗?
答案 0 :(得分:2)
好的,我想我可能已经解决了自己的问题。
问题在于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)
现在构建和服务都有效。
答案 1 :(得分:0)
您丢失了添加到Webpack json
扩展中的解决方法
module.exports = {
...
resolve: {
extensions: ['.ts', '.js', '.json']
}
...
};