【问题标题】:Cloud function storage and deploy target云函数存储和部署目标
【发布时间】:2018-09-06 09:57:34
【问题描述】:

我在 Firebase 上使用部署目标,除了我的云功能外,一切都运行良好。

  1. process.env.FIREBASE_CONFIG 环境变量没有正确的值。属性“databaseURL”和“storageBucket”不是我配置要使用的目标
  2. 当我使用 admin.database() 时,它没有使用我创建的并且我想使用的正确 RTDB
  3. 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?

【问题讨论】:

  • firebase functions:config:get firebase 返回什么?
  • 谢谢菲利普。它返回HTTP Error: 404, Requested entity was not found。我可以使用 config:set 设置 FIREBASE_CONFIG 变量吗?这是最佳做法吗?
  • FIREBASE_CONFIG 是自动填充的。阅读以下内容了解更多信息:firebase.google.com/docs/functions/…
  • 是的,我知道......但这应该有什么帮助?我不知道如何更改此值。如果我不能,如何配置我的云功能以使用我的目标数据库和存储?
  • 您是否要针对另一个项目? firebase listfirebase use [project_id]

标签: firebase google-cloud-functions


【解决方案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}`
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 2020-08-02
    • 2021-04-09
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 2021-03-30
    • 2020-03-26
    相关资源
    最近更新 更多