Пока кто-то не сказал мне, что они тестируют функции AWS Lambda локально перед развертыванием, я развертывал его в облаке для тестирования облачных функций Firebase.
Я посмотрел, есть ли у функций firebase такая же функция, конечно же, они есть!
https://firebase.google.com/docs/functions/local-emulator
Итак, я поделюсь некоторыми недоразумениями, с которыми столкнулся.
OS: Linux(Ubuntu 18.04) React: Single Page Application (SPA) Firebase functions: "typescript": "^3.2.2" "firebase-admin": "^8.3.0", "firebase-functions": "^3.2.0", "grpc": "^1.22.2"
Версия Node.js
это документы, которые вы можете прочитать в первую очередь. Однако я использовал новейшую версию Node.js 12.8, в то время как новейшая версия узла функции firebase на данный момент 10 (бета). Я понизил версию моей ноды по умолчанию до 10.
nvm alias default 10
не забудьте изменить файлpackage.json
внутри каталога функций с помощью
"engines": {"node": "10"},
Установка переменной окружения
Об учетных данных говорят, что их нужно устанавливать каждый раз.
https://cloud.google.com/docs/authentication/getting-started
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Что я сделал, так это навсегда выложил на ~/.bashrc
Стройте перед подачей на стол!
Я потратил довольно много времени, выясняя, что пошло не так с командой ниже:
firebase serve --only functions
Я наконец-то понял, что тебе нужно его построить! (может быть, потому, что мои функции были в Typescript?), и я также обнаружил, что package.json
скрипты уже были
"serve": "npm run build && firebase serve --only functions",
Конфигурация React.js
поскольку react-scripts
уже имеет среду process.env.NODE_ENV
, приведенный ниже код должен работать find.
export const functions = firebase.app().functions("asia-northeast1"); if (process.env.NODE_ENV === "development") { functions.useFunctionsEmulator("http://localhost:5000"); }
Теперь я готов!