Облачные функции хранения и развертывания цели - PullRequest
0 голосов
/ 06 сентября 2018

Я использую цели развертывания в Firebase, и все работает нормально, кроме моих облачных функций.

  1. Переменная process.env.FIREBASE_CONFIG env не имеет правильных значений.Свойства «databaseURL» и «storageBucket» - это не то, что я настроил для целевого использования
  2. . Когда я использую admin.database(), он не использует правильный RTDB, который я создал, и который я хочуuse
  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_CONFIGсделав firebase functions:config:set firebase.databaseURL="hatch-shadra-dev.firebaseio.com" firebase.storageBucket="hatch-shadra-dev", но это не сработало, потому что Invalid config name firebase.databaseURL, cannot use upper case. затем попытался без прописных букв и получил Cannot set to reserved namespace firebase Как я могу переопределить этот FIREBASE_CONFIG?или я просто не должен использовать его для инициализации firebase вручную?

1 Ответ

0 голосов
/ 06 сентября 2018

Хорошо, вот что я сделал, чтобы исправить эту проблему.

Может быть, есть лучший вариант, или я просто неправильно использую Firebase здесь.В любом случае, вот решение:

Сначала добавьте в проект некоторую конфигурацию

firebase functions:config:set target.database="hatch-shadra-dev.firebaseio.com" target.bucket="hatch-shadra-dev"

Затем используйте ее в облачной функции с admin.initializeApp ()

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}`
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...