Есть ли способ нормализовать различия в request.url, когда http firebase-функции работают под эмулятором и развертываются - PullRequest
0 голосов
/ 11 мая 2019

Для инструментов 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-адреса функций не будут зарегистрированы.

Я надеюсь найти лучшее решение для тестирования.

1 Ответ

0 голосов
/ 21 мая 2019

Это оказалось ошибкой и было решено для моего случая в firebase-tools 6.10.0.

https://github.com/firebase/firebase-tools/issues/1279

Эта связанная проблема также была открыта:

https://github.com/firebase/firebase-tools/issues/1312

...