我正在实现一个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"
任何引起错误的主意。
答案 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-这是我正在尝试实现的代码
该功能已部署并且正在运行-因此我可以确认上述建议是否有效。