Перезапись хостинга с пользовательским доменом для функции не работает

#firebase #google-cloud-functions #firebase-hosting #firebase-cli

# #firebase #google-cloud-функции #firebase-хостинг #firebase-cli

Вопрос:

Я пытаюсь настроить firebase с доменом, чтобы:

  • Мои функции доступны на mydomain.com/api/functionName
  • Мой хостинг доступен на mydomain.com (или предпочтительно mydomain.com/client /, но другой тоже будет работать)

Мой firebase.json выглядит так:

 {
  "hosting": {
    "public": "build",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      },
      {
        "source": "/api/helloWorld",
        "function": "helloWorld"
      }
    ]
  }
}
 

После развертывания этого и доступа к домену в браузере оба / /api/helloWorld маршрута и всегда будут перенаправлять меня в мое клиентское приложение, а не в мою функцию.

Что действительно странно для меня, так это то, что при локальном запуске эмулятора хостинг вообще не работает, но localhost:5000/api/helloWorld работает должным образом и вызывает функцию.

введите описание изображения здесь

Что я здесь делаю не так? Такое ощущение, что my firebase.json вообще не развернут.

Обновить

Вот мое определение функции, если это имеет к этому какое-то отношение:

 exports.helloWorld = functions
  .region("europe-west3")
  .https.onRequest((_, response) => {
    response.send("Hello from Firebase!");
  });
 

Ответ №1:

Перезапись выполняется в порядке «побед в первом совпадении». Поскольку у вас есть a ** вверху, он будет соответствовать всем URL-адресам, а вторая перезапись никогда не будет доступна. Если вы измените порядок, вы должны увидеть, что он работает должным образом:

 {
  "hosting": {
    // ...
    "rewrites": [
      {
        "source": "/api/helloWorld",
        "function": "helloWorld"
      },
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}
 

Комментарии:

1. Оказывается, вы не можете использовать перезапись хостинга функции с функциями вне us-central1 . Вот почему это приводит к такому странному поведению. Развертывание моей функции us-central1 отлично работает с вашим ответом.