Вопрос
Как использовать Express в облачных функциях Firebase?
Ожидания
Используя любой из URL-адресов, которые я настроил, я ожидаю увидеть "Hello from Express on Firebase!"
в журналах консоли.
Почему? Насколько я понимаю, "*"
означает, что все запрошенные маршруты должны response.send("Hello from Express on Firebase!");
app.get("*", (_request, response) => {
response.send("Hello from Express on Firebase!");
});
Выпуск
Когда я использую, https://us-central1-myapp.cloudfunctions.net/helloWorld
я получаю ожидаемое Hello from Firebase!
в журналах. Должен ли я также увидеть "Hello from Express on Firebase!"
?
Когда я использую https://us-central1-myapp.cloudfunctions.net/api
, я получаю 404 error
URL, https://us-central1-myapp.cloudfunctions.net/api
является проблемой. Понятно почему в ответе ниже.
код
// Express
import express = require("express");
const app = express();
const cors = require("cors")({
origin: "*"
});
app.use("*", cors);
// Firebase Functions SDK
import functions = require("firebase-functions");
app.get("*", (_request, response) => {
response.send("Hello from Express on Firebase!");
});
exports.api = functions.https.onRequest(app);
exports.helloWorld = functions.https.onRequest((_request, response) => {
response.send("Hello from Firebase!");
});
ТЛ; др
Пример того, чего я надеюсь достичь, это здесь , но ни один из примеров кода не сработал для меня. Я получаю 404 error
с каждым.
Экспресс-документация здесь показывает похожий пример HelloWorld, но я путаю, как Firebase занимает место app.listen(3000, () => console.log('Example app listening on port 3000!'))
Правильно ли работает cors
в моем примере кода? Хотя я получаю ожидаемый ответ и журнал, консоль Chrome предупреждает: Cross-Origin Read Blocking (CORB) blocked cross-origin response https://appengine.google.com/_ah/lo....
У меня есть приложение Slack, которое просматривает эти URL-адреса (я тоже выбрал их с помощью Chrome). В конце концов, я бы хотел использовать промежуточное ПО Botkit в своих облачных функциях Google. Я еще не понял правильную настройку Express app.use()
и app.get()