错误解析触发器在部署Firebase函数时找不到模块

时间:2019-03-05 15:31:06

标签: firebase

我正在实现一个Firebase函数终结点,该终结点需要我对两个不同的项目进行身份验证。在SO和其他来源上找到的信息表明了这一点

import * as functions from 'firebase-functions'; 
import * as admin from 'firebase-admin';

const serviceAccountSource = require('./source.json');
const serviceAccountTarget = require('./target.json');

const sourceAdmin = admin.initializeApp({
  credential: admin.credential.cert(serviceAccountSource)
})
const targetAdmin =  admin.initializeApp({
  credential: admin.credential.cert(serviceAccountTarget)
s}, "destination")

其中source.json和target.json是存储从项目设置=>生成新私钥获得的serviceAccount凭据(JSON)的文件。

我的文件夹结构如下

functions/
   index.ts
   source.json
   target.json

运行以下内容

npm run-script lint

不会产生任何错误,但是当我运行时

firebase deploy --only functions

我知道

Error: Error parsing triggers: Cannot find module './source.json'

Firebase管理员/功能版本如下

"firebase-admin": "7.0.0",
"firebase-functions": "^2.2.0"

打字稿

"typescript": "^3.2.2"

任何引起错误的主意。

2 个答案:

答案 0 :(得分:2)

如果您使用的是Typescript,请尝试将source.json移到lib文件夹中。

答案 1 :(得分:0)

我找到了解决方案。尽管有关Firebase管理功能(参数等)的文档似乎非常稀少,但我确实注意到credential.cert成员采用了ServiceAccountPathOrObject。 我尝试过

const sourceAdmin = admin.initializeApp({
  credential: admin.credential.cert('./source.json')
})

此操作失败,找不到路径,但是这次它给出了路径。由此可见,路径中缺少元素

const sourceAdmin = admin.initializeApp({
  credential: admin.credential.cert('./src/source.json')
})

已部署功能。然后,我尝试返回原始代码,并在路径中添加了“ src”文件夹-但这导致了相同的错误。

我更喜欢上面的解决方案,但是我仍然很想知道是什么引起了原始错误-鉴于那里的许多文档似乎都建议使用此https://gist.github.com/brunobraga95/82bef0672ce451767107e62df1d8b28f-这是我正在尝试实现的代码

该功能已部署并且正在运行-因此我可以确认上述建议是否有效。