首页 > 解决方案 > 消除异步快速路由回调中重复的 try catch 语句?

问题描述

我有一个用 Express 用 Node JS 编写的 api。我所有的路线都遵循这种模式:

router.get("/my/url", async (req, res) => {
  try{
    // await code...
  }catch(error){
    console.error(error.message);
    res.status(500).json({message: "Server Error"})
  }
});

这个 try catch 在我所有的路线中都是一样的。有什么方法可以否定这一点,只写在一个地方,所以我的路线更像:

router.get("/my/url", async (req, res) => {
  // await code...
});

标签: node.jsexpressasync-await

解决方案


你应该检查这个包express-async-errors

之后导入包express,然后你只需要像这样定义错误处理程序

app.use((err, req, res, next) => {
    console.error(err.message);
    res.status(500).json({message: "Server Error"})
});

推荐阅读