Быстрые маршруты и промежуточное ПО с облачными функциями Firebase - PullRequest
0 голосов
/ 13 сентября 2018

Вопрос

Как использовать 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()

1 Ответ

0 голосов
/ 14 сентября 2018

Ответ

Я сделал простую ошибку, трактовав /api как функцию, когда она фактически является частью пути.

Используя этот URL с конечным /

https://us-central1-myapp.cloudfunctions.net/api/

Сейчас я работаю на маршруте и функции Express.

...