提问者:小点点

如何在express上为404错误添加中间件


设置

app.use("/api/tobaccos", tobaccos);

app.use(function(err, req, res, next) {
  console.error(err.message);
});

API:

router.get("/:id", async (req, res) => {
  console.log("GET TOBACCO:" + req.params.id);

  await Tobacco.findById(req.params.id)
    .then(tobacco => res.status(200).json({ status: "success", data: tobacco }))
    .catch(error => res.status(404).json({
      status: "fail",
      msg: "Tobacco not found!",
      code: "error.tobaccoNotFound"
    }));

});

我正在尝试为所有404错误添加中间件

app.use(function(err, req, res, next) {
  console.error(err.message);
});

否则就不管用了

app.get('*', function(req, res){
  res.status(404).send('what???');
});

怎么啦?


共1个答案

匿名用户

您可以在文件中添加此中间件。 它会为任何无效路由发送错误。

app.use((req, res, next) => {
    const error = new Error('Error');
    error.status = 404;
    next(error);
});
app.use((error, req, res, next) => {
    res.status(error.status || 500);
    res.json({
        error: {
            message: error.message
        }
    });
});