我还在学习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
1条答案
按热度按时间83qze16e1#
由于您没有为“/”路由添加任何响应,它将永远加载。要检查,您可以发送一个简单的响应如下:
在使用中间件之前添加以下行