#javascript #node.js #express
#javascript #node.js #экспресс
Вопрос:
Я только что запустил новый проект, и мой app.get никогда не вызывается. Сайт просто загружается вечно, даже не отображая ничего. Я в основном копирую / вставляю из другого рабочего проекта, но что-то здесь не работает, и я не могу понять, что это такое. Код:
app.js
const express = require("express");
const session = require("cookie-session");
const mongoose = require("mongoose");
const compression = require("compression");
const app = express();
mongoose.connect("connectString", {useNewUrlParser: true, useUnifiedTopology: true});
app.set("view engine", "ejs");
function requireHTTPS(req, res, next) {
if (!req.secure amp;amp; req.get('x-forwarded-proto') !== 'https' amp;amp; process.env.NODE_ENV !== "development") {
return res.redirect('https://' req.get('host') req.url);
}
next();
}
app.use(requireHTTPS);
app.use(compression);
app.use(session({
secret: "secret",
cookie: {secure: false},
saveUninitialized: true,
resave: false
}));
app.use(express.static(__dirname "/views"));
app.use(express.urlencoded({extended: true}));
app.use(express.json());
require("./routes")(app);
app.listen(process.env.PORT, ()=>{});
routes.js
const home = require("./controllers/home");
module.exports = function(app){
app.get("/", home.landingPage);
}
home.js
module.exports = {
landingPage: function(req, res){
console.log("landing");
return res.render("/home.ejs");
}
}
Я смотрел на это около часа, пытаясь выяснить, что не так, но я в растерянности. Console.log(«landing») также никогда не запускается, поэтому вся функция LandingPage не вызывается. Кто-нибудь может мне здесь помочь? Чего мне не хватает?
Ответ №1:
Проблема в том, как вы настроили compression
промежуточное программное обеспечение. Это должно быть сделано как
app.use(compression());
вместо
app.use(compression);
compression
само по себе не дает функции промежуточного программного обеспечения express, поэтому next()
никогда не вызывается, и запрос зависает навсегда.
Подробности использования см. в официальных документах.