Seprate маршруты в хостинге firebse с использованием Node JS - PullRequest
0 голосов
/ 07 апреля 2020

Я хочу разделить / создать маршруты на хостинге Firebase, используя Node js. Я создал два JS файла: apiservice. js и service. js, которые содержат функции облачной базы firebase.

apiservice. js файл содержит маршруты, связанные с запросами API. service. js Файл содержит маршруты, относящиеся к запросам обычного использования. Когда я запускаю этот код, появляется следующая ошибка:

Невозможно получить / firebaseproject-id / us-central1 / app / api /

Код указан ниже:

apiservice. js:

const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/api/login", (req, res) => {
    //code
});
app.get("/api/signup", (req, res) => {
    //code
});
exports.apiservice = functions.https.onRequest(app);

service. js:

const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.get("/signup", (req, res) => {
    //code
});
app.get("/login", (req, res) => {
    //code
});
exports.service = functions.https.onRequest(app);

firebase. json:

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

Любая помощь будет оценена. Спасибо.

1 Ответ

1 голос
/ 08 апреля 2020

Я нашел решение. Я не импортировал apiservice и службу в файл index. js. Из-за этого не работала маршрутизация. Итак, я немного изменил свой код и добавил несколько строк в файл index. js. Отсюда я получил ссылку: Как включить обработчики маршрутов в несколько файлов в Express?

Итак, обновленный рабочий код:

apiservice . js:

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

let apirouter = express.Router();
apirouter.get("/api/signup", (req, res) => {
    //Code
});
module.exports = apirouter;

сервис. js:

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

let router = express.Router();
apirouter.get("/signup", (req, res) => {
    //Code
});
module.exports = router;

index. js:

const functions = require('firebase-functions');
const express = require("express");
const apisrcrouter = require("./apiservice");
const srcrouter = require("./service");

let app = express();
app.get("/api/**", apisrcrouter);
app.get("/**", srcrouter);

module.exports = {
    'apisrcrouter': functions.https.onRequest(apisrcrouter),
    'srcrouter': functions.https.onRequest(srcrouter)
};

пожарная база. json:

{
    "hosting": {
        ...
        "rewrites": [
        {
            "source": "/api/**",
            "function": "apisrcrouter"
        },
        {
            "source": "/**",
            "function": "srcrouter"
        }]
    ...
}
...