Новый проект Node Express, не удается вызвать какое-либо приложение.get

#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() никогда не вызывается, и запрос зависает навсегда.

Подробности использования см. в официальных документах.