Для инструментов Firebase 6.9.2:
При использовании firebase emulators:start --only functions, hosting
, когда функции вызываются с помощью правила перезаписи хостинга, функции вызываются с префиксами пути URL запроса, отличного от того, если функции были развернуты воблако.Например, с учетом фрагмента хостинга firebase.json, например:
{
"target": "myapi",
"public": "./dist/hosting/myapi",
"rewrites": [{
"source": "/api/myapi/*",
"function": "myapi"
}
]
},
При развертывании в firebase функция myapi
будет вызываться с URL-адресом запроса, который начинается с: /api/myapi/
но если запустить в эмуляторе, он будет выглядеть примерно так: /[firebase-project-id]/[firebase-region]/myapi/api/myapi/
Это не имеет значения, если функция не смотрит на путь запроса, но в моем случае функция является обработчикомдля обработчика express (koa) с маршрутами, поэтому важно знать базовый путь.
Я посмотрел, есть ли что-нибудь в process.env, но есть только имя GCLOUD_PROJECT и несколько параметров FIREBASE_CONFIG.
Я не смог найти никакой документации по более сложному управлению перезаписью функции в firebase.json.
Я могу обойти это при тестировании, установив переменную среды, соответствующую префиксуфункции выполняются локально и учитывают это при обработке запросов.К сожалению, префикс URL-адреса запроса недоступен до тех пор, пока эмуляторы не будут запущены, а URL-адреса функций не будут зарегистрированы.
Я надеюсь найти лучшее решение для тестирования.