Пока кто-то не сказал мне, что они тестируют функции 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");
}

Теперь я готов!