Express.js使用error-handling middleware这样的:如何获取提供的函数的参数数量?
app.use(function(err, req, res, next) {...})
,只有当一个错误在前面的中间件之一,会被调用。
我用下面的代码进行验证:
app.use(function(err, req, res, next){
console.log("CALL BAD");
res.send(500, 'Internal server error');
});
app.use(function(req, res, next){
console.log("CALL GOOD");
next();
});
这时候,有一个错误,但如果一切正常,快速跳过它的第一个函数只调用。所以它必须以某种方式区分4个参数与3个参数的函数?它是如何做到的?
E.g.我知道的arguments
魔变等,但在这种情况下,快递确实喜欢function addroute(fn) {if (has4Params(fn)) doThis(); }
这就是javascript的工作原理。你应该在它被调用的地方处理它。你必须显式地发送{}或null来代替'err'参数 – madhairsilence 2014-10-03 09:46:24
你为什么不[见你自己?](https://github.com/strongloop/express/blob/master/lib/application.js#L154-L210) – 2014-10-03 10:11:44