Хостинг Firebase переписывает функции, которые не работают должным образом - PullRequest
0 голосов
/ 27 июня 2019

Я создаю статический веб-сайт с использованием HTML, CSS и JS, размещенный на хостинге Firebase и подключенный к пользовательскому домену.Единственная серверная функция, которая мне нужна, - это отправка почты из контактной формы.Для этого я пытаюсь использовать облачную функцию Firebase.Я инициализировал функции в том же проекте и пытаюсь использовать перезапись хостинга Firebase, чтобы переписать запрос на mydomain.com/contact для функции контакта.Но когда я пытаюсь получить доступ к mydomain.com/contact в браузере, он показывает следующее сообщение об ошибке 403 Запретное.

Error: Forbidden
Your client does not have permission to get URL /contact/contact from this server.

firebase.json

{
  "hosting": {
    "public": "build",
    "rewrites": [{
      "source": "/contact",
      "function": "contact"
    }],
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ]
  }
}

Облачная функция (не реализованаактуальная логика)

import * as functions from 'firebase-functions';

exports.contact = functions.https.onRequest((request, response) => {
    response.send("<h1>Contact<h1>");
});

Я использую план зажигания Firebase.

1 Ответ

1 голос
/ 27 июня 2019

Это работает для меня:

"rewrites": [
    {
      "source": "**",
      "function": "myApp"
    }
  ]

И в экспресс-функции,

import * as functions from 'firebase-functions';
import express from 'express';
const app = express();

app.get('/contact', (req, res) => {
  res.send("<h1>Contact<h1>");
};

export const myApp = functions.https.onRequest(app);
...