gpt4 book ai didi

node.js - 如何在Node.js中管理HTTP错误

转载 作者:行者123 更新时间:2023-12-03 08:14:55 24 4
gpt4 key购买 nike

嗨,我正在开发我的第一个Node.js应用程序,但我发现了第一个问题,这是一个非常基本的问题,我无法捕获HTTP错误(404、500,...)

我遵循了文档(我是这样认为的),但是我想我缺少了一些东西。

这是我的代码:

var express = require('express')
app = express()
app.use(express.logger('dev'));

app.get('/', function(req, res) {
res.send('Hellow World!!!')
})
app.use(app.router);
app.use(function(err, req, res, next) {
console.error('Oh!! ERROR');
console.error('My ERROR: ' + JSON.stringify(err));
});

app.listen(3000);
console.log('Server running at http://127.0.0.1:3000/');

提前致谢。

最佳答案

因此,Express的工作方式是,如果它到达整个中间件和路由处理程序堆栈的末尾,并且尚未响应,则它将自动发送回退404响应而不会引发错误。这就是为什么您的错误处理中间件没有被调用的原因。默认情况下,express不会将404错误视为错误,这可能是正确的思考方式。

如果要自定义此选项,则可以将中间件放在堆栈的末尾,以直接提供自定义404页面的服务,或者如果愿意,可以通过错误调用next

app.get('/'...
app.get('/two'...
app.get(/'three'...

app.use(middleware1...
app.use(middleware2...
app.use(app.router);
app.use(function (req, res, next) {
//Option 1: respond here
return res.status(404).render('my_404_view');
//Option 2: trigger error handler
return next(new Error('404ed!'));
}

选项2将触发您的错误处理中间件。在那里,您将必须从错误对象中获取信息,以确定要呈现的所需 View 和要发送的状态代码。我个人定义了一个具有404代码的 errors.NotFound类,并允许我呈现一个友好的404页面 View 。

关于node.js - 如何在Node.js中管理HTTP错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14407690/

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