gpt4 book ai didi

javascript - 我的 Node js 的顺序对我处理 server.js 的方式有影响吗?

转载 作者:行者123 更新时间:2023-12-01 02:01:15 25 4
gpt4 key购买 nike

我正在学习 Node js 应用程序,我想知道我为 app.use (404 和 500 错误)放置错误处理程序以及为 app.get(/) 路由放置 Controller 路由的顺序是否重要?

https://www.w3schools.com/nodejs/ https://www.tutorialspoint.com/nodejs/index.htm

这是我的 app.js

//**** DEPENDENCIES ****//
const express = require('express');
const app = express();

//use the express handlebars
const exphbs = require('express-handlebars');
app.engine('handlebars', exphbs({defaultLayout: 'main'}));
app.set('view engine', 'handlebars');


const index = require('./controllers/index');
const fetch = require('node-fetch');



//**** MIDDLEWARE ****//
// static files will live in the public folder
app.use(express.static('public'));


// **** CONTROLLERS **** //
// separate the route from the app.js to make it cleaner
require('./controllers/index.js')(app);

//app.get('/', index)

// catch 404 and forward to error handler
app.use((req, res, next) => {
const err = new Error('Not Found');
err.status = 404;
next(err);
});

// error handler
app.use(function(err, req, res, next) {
if(err.status == 404) {
res.status(err.status || 404);
res.render('error', {err : err.status, message: "Sorry We Can't Help You", stack: err.stack });
} else if (err.status == 500) {
console.log(500);
// render the error page
res.status(err.status || 500);
res.render('error', {err : err.status});
// res.redirect('/500.html');
}
});


// **** Local server Port **** //
var PORT = process.env.PORT || 3000;

app.listen(PORT, function(req, res) {
console.log("Express App listening on port " + PORT + "...");
});

最佳答案

在您的具体情况下,顺序确实很重要,因为您在 404 处理程序中调用 next(err) 并且您希望自定义错误路由处理程序能够获取该内容,并且这是它实现的唯一方法知道 next(err) 是在之后。如果您颠倒了顺序,那么您最终只会得到 Express 中的默认错误处理程序,而不是您自己的自定义错误处理程序。

因此,对于您编写代码的方式,您拥有正确的顺序,而相反的顺序将无法达到您想要的效果。

关于javascript - 我的 Node js 的顺序对我处理 server.js 的方式有影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50557978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com