Проблема с развертыванием Express сервера в Firebase - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь развернуть свой сервер express для функций firebase. когда я пытаюсь запустить его с помощью команды firebase serve, он работает нормально, но когда я развертываю его, я не могу получить доступ к любому маршруту моего сервера.

мои функции / index. js:

const functions = require('firebase-functions')
const express = require('express')
const app = express()
const bodyParser = require('body-parser')
const controller = require('./controller')
const cors = require('cors')

app.use(cors({ origin: true }))
app.use(bodyParser.json())
app.use(express.json())

app.get('/getGardens', controller.getGardens)
app.post('/getPresentDogsInGarden', controller.getPresentDogsInGarden)

exports.App = functions.https.onRequest(app)

firebase. json:

{
  "hosting": {
    "public": "public",
    "rewrites" : [{"source" : "**", "function" : "App"}]
  }
}

моя ссылка: ... любой / App / getGardens

получение в ответ: «Ошибка: не удалось обработать запрос»

EDIT:

решил мою проблему. с кодом и инициализацией все было нормально. чего я не знал, так это того, что с планом Free Spark я не могу использовать API, не принадлежащие Google. Я использовал mon go в своем модуле контроллера, и он не смог подключиться. Я перешел на план Blaze, и он работал нормально.

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Я думаю, что у вас что-то не так с инициализацией проекта, файл. json должен выглядеть так, если вы развертываете сервисы функций:

{
  "firestore": {
      "rules": "firestore.rules",
      "indexes": "firestore.indexes.json"
   }
}

И из чего я видя, что вы используете службы Hosting, вам следует изменить его на functions. Прямо сейчас вы пытаетесь развернуть свой код express в службе хостинга, вместо этого он должен быть развернут в службах функций.

0 голосов
/ 18 июня 2020

Вот сообщение на Medium, в котором показано, как это сделать:

https://codeburst.io/express-js-on-cloud-functions-for-firebase-86ed26f9144c

Пример кода:

const functions = require("firebase-functions")
const express = require("express")

/* Express */
const app1 = express()
app1.get("*", (request, response) => {
  response.send("Hello from Express on Firebase!")
})

const api1 = functions.https.onRequest(app1)

module.exports = {
  api1
}
...