Javascript 如何捕获Express/Nodejs中的404错误?
Javascript 如何捕获Express/Nodejs中的404错误?,javascript,node.js,express,Javascript,Node.js,Express,var express=require('express'); var path=require('path'); var-app=express(); app.use(express.static(path.join(uu dirname,'public')); //捕获404并转发到错误处理程序 应用程序使用(功能(请求、恢复、下一步){ var err=新错误(“未找到”); err.status=404; 下一个(错误); });请记住,express use()是针对所有请求执行的,因
var express=require('express');
var path=require('path');
var-app=express();
app.use(express.static(path.join(uu dirname,'public'));
//捕获404并转发到错误处理程序
应用程序使用(功能(请求、恢复、下一步){
var err=新错误(“未找到”);
err.status=404;
下一个(错误);
});代码>请记住,express use()是针对所有请求执行的,因此您的404状态将附加到应用程序中的所有请求。在检查输入是否正确的回调中使用它,例如,如果是HTTP express post请求:
// This is just an example, please note
app.post('/signin', function(req, res) {
if(!user.passwordCheck(req.body.password) {
res.status(404).send({
message: 'Incorrect input'
});
} else res.redirect('/success');
}
我希望这能有所帮助。在您的routes文件夹(如果您使用的是express gen)或其他任何地方创建一个节点模块,该模块使用express.router()
,如下所示
var express = require('express');
var bodyParser = require('body-parser');
var dishRouter = express.Router();
dishRouter.use(bodyParser.json());
然后处理您的请求,例如:
dishRouter.route('/')
.get(function(req, res, next) {
res.end('Will send all the dishes to you!');
})
.post(function(req, res, next) {
res.end('Will add the dish: ' + req.body.name + ' with details: ' + req.body.description);
});
并在ur app.js或您运行的主文件中使用:
var express = require('express');
var path = require('path');
var dishRouter=require('./routes/dishRouter');
var app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.use('/dishes',dishRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
res.redirect('/fail');
next(err);
});
因此,这将做的是,它将处理客户端对URI/disks
的get和post请求,对于其他人,它将抛出错误404并发送到/fail
路径。感谢您的良好解释,这将帮助我深入理解这个问题。@ivanJF如果有帮助,打个勾怎么样,lol.很高兴看到你的例子,我发现它似乎能理解。谢谢