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.很高兴看到你的例子,我发现它似乎能理解。谢谢