NodeJS localhost:5000服务器只是保持加载,而不显示ejs模板

dl5txlt9  于 2023-01-20  发布在  Node.js
关注(0)|答案(1)|浏览(116)

我还在学习Node.js。我用express documentation创建了一个服务器,它以前是有效的。但是现在我为一个项目导入了一些npm包。像dotenv,http-errors,ejs和其他。我创建了(.env)文件,并声明PORT=5000,将其导入到我的(main.js)文件中,并调用app.listen函数。这样,它可以在浏览器中显示我的ejs模板,但是当我点击http://localhost:5000时,它只是继续加载,但什么也没有出现。它也没有在终端中给出任何错误,它只是继续加载,除非我在终端中按ctrl+c。
main.js

const express = require("express");
const dotenv = require("dotenv");
const mongoose = require("mongoose");
const path = require("path");
const cookieParser = require("cookie-parser");
const { notFoundHandler, errorHandler } = require("./middlewares/common/errorHandler");

const app = express();
dotenv.config();

//database connection
mongoose.set("strictQuery", true);
mongoose.connect(process.env.MONGO_CONNECTION_STRING, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
})
.then(() => console.log("Database Conntcted!"))
.catch(err => console.log(err));

app.use(express.json);
                  
app.use(express.urlencoded({ extended: true }));

app.set("view engine", "ejs");
app.set('views', 'views');

app.use(express.static(path.join(__dirname, "public")));

app.use(cookieParser(process.env.COOKIE_SECRET));

app.use(notFoundHandler);

//common error handler
app.use(errorHandler);

app.listen(process.env.PORT, () => {
  console.log(`app is listing at port ${process.env.PORT}`);
});

我的错误处理程序. js

const createError = require("http-errors");

function notFoundHandler(req, res, next) {
  next(createError(404, "CONTENT WAS NOT FOUND!"));
}

function errorHandler(err, req, res, next) {
  res.render("error", {
    title: "Error Page",
  });
}

module.exports = {
  notFoundHandler: notFoundHandler,

  errorHandler,
 
};

我的ejs文件路径(“./views/error.ejs”)

<title><%= title %></title>
<body>
    Alart!
</body>

.env文件

PORT=5000
83qze16e

83qze16e1#

由于您没有为“/”路由添加任何响应,它将永远加载。要检查,您可以发送一个简单的响应如下:

app.get("/", (req, res) => {
  res.send("Some Text");
});

在使用中间件之前添加以下行

app.set('view engine', 'ejs');
app.set('views', 'views');

相关问题