FireScript Admin SDK初始化失败,来自TypeScript

时间:2017-12-09 19:57:39

标签: node.js angular typescript firebase firebase-admin

我正在尝试在我的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可能导致此错误?

有什么想法吗?

2 个答案:

答案 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']
    }
    ...
};