De los documentos de manejo de errores de Express:
Defina funciones de middleware de manejo de errores de la misma manera que otras funciones de middleware, excepto que las funciones de manejo de errores tienen cuatro argumentos en lugar de tres:
(err, req, res, next). Por ejemplo:app.use(function (err, req, res, next) { console.error(err.stack) res.status(500).send('Something broke!') })
Parece que .use(middlware) de Express inspecciona la length de la función de middleware para ver cuántos argumentos necesita, y si son cuatro, la trata de manera diferente a otras funciones de middleware, pasándole un error como primer argumento.
Esto es incompatible con las configuraciones modernas de linting como XO o Airbnb, ya que lo obliga a definir un parámetro final adicional que no se consume (es decir, el next en el ejemplo anterior). Además, los parámetros finales no utilizados pueden ser eliminados por algunas transformaciones de código automatizadas, que es algo de lo que no quiero preocuparme. En mi opinión, Function.prototype.length se mantiene mejor para la metaprogramación/introspección en lugar de afectar el comportamiento de producción real.
¿Hay alguna otra forma más explícita de definir un controlador de errores en Express, que no lo obligue a implicar la funcionalidad prevista a través de la cantidad de parámetros que toma su función?