微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Next js:错误中间件返回 res.status 未定义

如何解决Next js:错误中间件返回 res.status 未定义

我在 next.js 应用程序中使用 next-connect 来运行服务器端代码。我正在使用自定义错误中间件,但它抛出错误

res.status is undefined

这是我的错误中间件

export const errorMiddleWare = (err,req,res,next) => {
  err.statusCode = err.statusCode || 500;
  let error = { ...err };

  error.message = err.message;

  if (err.name === 'CastError') {
    const message = 'Resource not found for given' + err.path;
    error = new ErrorHandler(message,400);
  }

  if (err.name === 'ValidationError') {
    const message = Object.values(err.errors).map((e) => e.message);
    error = new ErrorHandler(message,400);
  }

  res.status(err.statusCode).json({
    error,message: error.message,stack: error.stack,});
};

我在 api 文件夹中的页面中的路由

import nc from 'next-connect';
import connectDb from '../../../config/dbconnect';
import { getAllProducts } from '../../../controllers/productController';
import { errorMiddleWare } from '../../../middlewares/error';

const router = nc();
connectDb();

//Routes
router.use(errorMiddleWare).get(getAllProducts);

export default router;

解决方法

尝试以这种方式使用 errorMiddleWare

const router = nc({onError: errorMiddleWare});
connectDb();

//Routes
router.get(getAllProducts);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?