ExpressJS:承诺和错误处理中间件

梅格·帕里克(Megh Parikh)

我定义了一些错误处理中间件,并且路由返回了Promise。但是,当那个承诺产生错误时,我必须.catch(err => next(err))在每个承诺之后手动附加尽管这不是问题,但ExpressJ是否明智地查看路由是否返回了承诺,如果是,则自动调用错误处理中间件。

我当前的缩短代码:

// errorHandlers.js
function sequelizeValidationError (err, req, res, next) {
  if (err.name && err.name == 'SequelizeValidationError')
    res.status(400).send(err.errors)
  else next(err)
}

// auth.js
router.post ('/register',  middleware.isNotAuthenticated, (req, res, next) => {
  const { email, password, name } = req.body;

  return models.User.find({where : { email }}).then(user => {
    if (user) {
      if (user.password == password) sendToken(user.id, res);
      else res.sendStatus(401);
    } else {
      return models.User.create({
        email, password, name
      }).then(user => {
        sendToken(user.id, res);
      })
    }
  }).catch(next)
})

// index.js
router.use('/auth', require('./auth'))

router.use(errorHandlers.sequelizeValidationError)

例如,当前我可能忘了catch在一个地方,并且服务器将发生故障。

我错过了什么吗?如何避免catch每次都要键入

梅格·帕里克(Megh Parikh)

该文件已经提起

我已经提交了重复的错误

到目前为止,最好的选择似乎是使用wrap函数

另请参见上面的@robertklep的注释。promise-express-router如果您不使用,可能会很有用route-paramsexpress-co似乎是一个包装函数+更多基于生成器的优点

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误处理程序expressjs中间件未捕获错误

来自分类Dev

expressJS承诺和错误处理

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Expressjs-使用中间件处理错误

来自分类Dev

如何使 elmah.io 与 ASP.NET Core 和错误处理中间件配合良好?

来自分类Dev

expressjs中的中间件功能错误

来自分类Dev

为什么我的错误处理程序不能处理异步中间件引发的异常?

来自分类Dev

昂首阔步的工具错误处理程序中间件未捕获错误

来自分类Dev

错误处理中间件并不总是有效

来自分类Dev

我的错误处理程序如何优先于较早的中间件

来自分类Dev

错误处理中间件捕获永远不会被捕获

来自分类Dev

ASP.NET Core 3.1中的自定义错误处理中间件?

来自分类Dev

TypeError:res.status不是错误处理中间件中的函数

来自分类Dev

带有错误处理中间件的 Application Insights

来自分类Dev

快速应用get()函数遇到错误时如何跳转到下一个中间件(错误处理中间件)

来自分类Dev

ExpressJS中的路由处理程序和中间件函数有什么区别?

来自分类Dev

ExpressJS日志中间件

来自分类Dev

如何从中间件将错误返回给ExpressJS?

来自分类Dev

拒绝Javascript承诺和错误处理

来自分类Dev

在 NodeJS/ExpressJS 的中间件中调用中间件

来自分类Dev

Mongoose 在 promise 调用和 Express 中间件中处理验证错误

来自分类Dev

expressjs-使用中间件功能

来自分类Dev

在ExpressJS中处理多个child_process的中间件时出错处理

来自分类Dev

django中间件错误

来自分类Dev

django中间件错误

来自分类Dev

错误和正常链共享的中间件

Related 相关文章

  1. 1

    错误处理程序expressjs中间件未捕获错误

  2. 2

    expressJS承诺和错误处理

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

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

  7. 7

    Expressjs-使用中间件处理错误

  8. 8

    如何使 elmah.io 与 ASP.NET Core 和错误处理中间件配合良好?

  9. 9

    expressjs中的中间件功能错误

  10. 10

    为什么我的错误处理程序不能处理异步中间件引发的异常?

  11. 11

    昂首阔步的工具错误处理程序中间件未捕获错误

  12. 12

    错误处理中间件并不总是有效

  13. 13

    我的错误处理程序如何优先于较早的中间件

  14. 14

    错误处理中间件捕获永远不会被捕获

  15. 15

    ASP.NET Core 3.1中的自定义错误处理中间件?

  16. 16

    TypeError:res.status不是错误处理中间件中的函数

  17. 17

    带有错误处理中间件的 Application Insights

  18. 18

    快速应用get()函数遇到错误时如何跳转到下一个中间件(错误处理中间件)

  19. 19

    ExpressJS中的路由处理程序和中间件函数有什么区别?

  20. 20

    ExpressJS日志中间件

  21. 21

    如何从中间件将错误返回给ExpressJS?

  22. 22

    拒绝Javascript承诺和错误处理

  23. 23

    在 NodeJS/ExpressJS 的中间件中调用中间件

  24. 24

    Mongoose 在 promise 调用和 Express 中间件中处理验证错误

  25. 25

    expressjs-使用中间件功能

  26. 26

    在ExpressJS中处理多个child_process的中间件时出错处理

  27. 27

    django中间件错误

  28. 28

    django中间件错误

  29. 29

    错误和正常链共享的中间件

热门标签

归档