Экспресс-маршруты работают при локальном обслуживании, но отказывают после развертывания - PullRequest
0 голосов
/ 04 июля 2019

Я создаю блог с использованием Node js и Express и размещаю его на firebase. Когда я обслуживаю веб-сайт локально, все работает очень хорошо, и HTML обслуживается, как и ожидалось. Но когда я развертываю сервер, маршруты больше не работают, и HTML-файлы не могут быть найдены. Я уверен, что это связано с тем, как firebase deploy содержит html-файлы.

Я не совсем уверен, куда идти отсюда. Я не могу найти хорошего руководства о том, как настроить что-то подобное в документах Firebase.

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

/* Express with CORS */
const app = express()
app.use(cors({ origin: true }))
app.get("/", (request, response) => {
  response.send("Hello from Express on Firebase with CORS!")
})

//File path consts
const publicDir = "/Users/wilson/wildman-talks-fb/public";
const blogDir = "/Users/wilson/wildman-talks-fb/public/blogs";

app.get("/about/", (req, res) =>{
    res.sendFile(path.join(publicDir, "/about.html"));
});

app.get("/contact/", (req, res) =>{
    res.sendFile(path.join(publicDir, "/contact.html"));
});

app.get("/tools/", (req, res) =>{
    res.sendFile(path.join(publicDir, "/tools.html"));
});

app.get("/five-steps-july-20/", (req, res) =>{
    //res.send(path.join(publicDir, "/five-steps-july-20.html"));
    res.sendFile(path.join(publicDir, "/five-steps-july-20.html"));
})

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

Итак, когда я размещаю сайт локально, все ссылки на моей веб-странице работают на другие html-страницы моего сайта. При развертывании на firebase я получаю 404 ошибки. Я смог использовать path.join (__dirname, "../public") и распечатать все содержащиеся в нем файлы. Когда я сделал это, это были файлы, которые были на моем локальном хосте: [".DS_Store", "404.html", "about.html", "blogs", "contact.html", "css", "five -steps-июль-20.html», "IMG", "index.html", "JS", "почта", "tools.html", "поставщик"]. После развертывания он просто возвращает ошибку 500, так что, думаю, это не поможет.

1 Ответ

0 голосов
/ 04 июля 2019

Ваши каталоги содержат абсолютные пути к вашей файловой системе.Попробуйте использовать динамические абсолютные пути.Измените пути с

  const publicDir = "/Users/wilson/wildman-talks-fb/public";
  const blogDir = "/Users/wilson/wildman-talks-fb/public/blogs";

на

  const path = require("path");
  const publicDir = path.join(__dirname, "/public";)
  const blogDir = path.join( __dirname, "/public/blogs");
...