我正在Firebase上使用部署目标,除我的Cloud功能外,其他一切工作正常。
process.env.FIREBASE_CONFIG
的env变量没有正确的值。属性“ databaseURL”和“ storageBucket”不是我已配置目标使用的属性admin.database()
时,它并没有使用我已经创建且想要使用的正确RTDB functions.storage.object().onFinalize()
没有“监视”正确的存储桶我的.firebaserc
文件
{
"projects": {
"default": "hatch-rpg",
"dev": "hatch-rpg"
},
"targets": {
"hatch-rpg": {
"hosting": {
"shadra": [
"shadra"
]
},
"database": {
"shadra": [
"hatch-shadra-dev"
]
},
"storage": {
"shadra": [
"hatch-shadra-dev"
]
}
}
}
}
我的firebase.json
文件
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"database": [
{ "target": "shadra", "rules": "database.rules.json" }
],
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
],
"source": "functions"
},
"hosting": [
{
"target": "shadra",
"public": "dist/shadra",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
],
"storage": [
{ "target": "shadra", "rules": "storage.rules" }
]
}
我正在像这样初始化Firebase
admin.initializeApp(functions.config().firebase);
我想念什么?
非常感谢
编辑:
我尝试通过执行firebase functions:config:set firebase.databaseURL="hatch-shadra-dev.firebaseio.com" firebase.storageBucket="hatch-shadra-dev"
来覆盖FIREBASE_CONFIG,但是它没有用,因为Invalid config name firebase.databaseURL, cannot use upper case.
然后尝试不使用大写并得到了Cannot set to reserved namespace firebase
如何覆盖此FIREBASE_CONFIG?还是我不应该使用它手动初始化firebase?
答案 0 :(得分:1)
好,这是我为解决此问题所做的事情。
也许有更好的选择,或者我只是在这里滥用Firebase。 无论如何,这是解决方案:
首先,向项目添加一些配置
firebase functions:config:set target.database="hatch-shadra-dev.firebaseio.com" target.bucket="hatch-shadra-dev"
然后通过admin.initializeApp()在Cloud函数中使用它
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
const config = functions.config();
admin.initializeApp({
...config.firebase,
storageBucket: config.target.bucket,
databaseURL: `https://${config.target.database}`
});