Express-函数原型toString()在错误处理中?

亚历山大·米尔斯

我遇到了一个长期的问题,那就是Express会分出HTML字符串而不是JSON,而无论如何我们显然都试图强制JSON总是从服务器中出来-

原来这是我的错误处理中间件中的一个问题-我错过了下一个参数,例如:

这是失败的:

app.use(function (err, req, res) {
        res.status(err.status || 500).json({
            error: 'sorry the API experienced an error serving your priority request'
        });
});

这是正确的行为:

app.use(function (err, req, res, next) {
        res.status(err.status || 500).json({
            error: 'sorry the API experienced an error serving your priority request'
        });
});

如您所见,添加第四个参数“ next”使Express可以将其识别为错误处理回调函数。

我的问题是-Express如何知道第四个参数已存在,或者更不用说参数的类型了?我唯一的猜测是Express正在使用Function.prototype.toString()来查看参数的数量。还是他们在做另一种方式?

Gevorg

正如注释中所写 Function.length

length 是函数对象的属性,它指示函数期望多少个参数,即形式参数的数量。

下面是快递仓库中代码片段

Layer.prototype.handle_error = function handle_error(error, req, res, next) {
  var fn = this.handle;

  if (fn.length !== 4) {
    // not a standard error handler
    return next(error);
  }

  try {
    fn(error, req, res, next);
  } catch (err) {
    next(err);
  }
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Express 4中的错误处理

来自分类Dev

express.js中嵌套异步函数中的错误处理

来自分类Dev

Express js-中间件中的错误处理

来自分类Dev

express.js中Ajax请求的错误处理

来自分类Dev

Express:在错误处理程序中调用next

来自分类Dev

在axios调用后Express中的错误处理

来自分类Dev

Express:在错误处理程序中调用next

来自分类Dev

Express js-中间件中的错误处理

来自分类Dev

集成Angular,Express错误处理

来自分类Dev

Express错误处理中的代码质量检查与隐式next()之间的冲突

来自分类Dev

自定义错误处理程序无法在Express中工作

来自分类Dev

无法在Express 4的错误处理程序中读取未定义的属性'domain'

来自分类Dev

无法在我的 node express 应用程序中触发主错误处理程序

来自分类Dev

对HTTP请求的express.js错误处理

来自分类Dev

如何使用express.Router实例进行错误处理

来自分类Dev

用Express在Node JS中进行简单的错误处理?

来自分类Dev

错误处理请求 - Oracle Application Express (APEX)

来自分类Dev

用于错误处理的 Node Express RESTful API 默认引擎

来自分类Dev

如何处理从 Express、NodeJS 中的路由处理程序调用的函数中的错误?

来自分类Dev

文件过大错误处理Node.js Express Multer

来自分类Dev

Node.js Express,错误处理仅适用于console.error

来自分类Dev

在通过管道传递响应时,在Express中进行错误处理

来自分类Dev

Express.js:错误处理程序执行不会停止。为什么?

来自分类Dev

Express错误处理用于生产和开发的中间件

来自分类Dev

Express错误处理用于生产和开发的中间件

来自分类Dev

文件过大错误处理Node.js Express Multer

来自分类Dev

类模块函数中的错误处理

来自分类Dev

Javascript函数中的错误处理

来自分类Dev

类模块函数中的错误处理

Related 相关文章

  1. 1

    Express 4中的错误处理

  2. 2

    express.js中嵌套异步函数中的错误处理

  3. 3

    Express js-中间件中的错误处理

  4. 4

    express.js中Ajax请求的错误处理

  5. 5

    Express:在错误处理程序中调用next

  6. 6

    在axios调用后Express中的错误处理

  7. 7

    Express:在错误处理程序中调用next

  8. 8

    Express js-中间件中的错误处理

  9. 9

    集成Angular,Express错误处理

  10. 10

    Express错误处理中的代码质量检查与隐式next()之间的冲突

  11. 11

    自定义错误处理程序无法在Express中工作

  12. 12

    无法在Express 4的错误处理程序中读取未定义的属性'domain'

  13. 13

    无法在我的 node express 应用程序中触发主错误处理程序

  14. 14

    对HTTP请求的express.js错误处理

  15. 15

    如何使用express.Router实例进行错误处理

  16. 16

    用Express在Node JS中进行简单的错误处理?

  17. 17

    错误处理请求 - Oracle Application Express (APEX)

  18. 18

    用于错误处理的 Node Express RESTful API 默认引擎

  19. 19

    如何处理从 Express、NodeJS 中的路由处理程序调用的函数中的错误?

  20. 20

    文件过大错误处理Node.js Express Multer

  21. 21

    Node.js Express,错误处理仅适用于console.error

  22. 22

    在通过管道传递响应时,在Express中进行错误处理

  23. 23

    Express.js:错误处理程序执行不会停止。为什么?

  24. 24

    Express错误处理用于生产和开发的中间件

  25. 25

    Express错误处理用于生产和开发的中间件

  26. 26

    文件过大错误处理Node.js Express Multer

  27. 27

    类模块函数中的错误处理

  28. 28

    Javascript函数中的错误处理

  29. 29

    类模块函数中的错误处理

热门标签

归档