首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下一个js:中间件返回错误:未定义res.status

下一个js:中间件返回错误:未定义res.status
EN

Stack Overflow用户
提问于 2021-07-25 22:40:08
回答 1查看 68关注 0票数 1

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

代码语言:javascript
复制
res.status is undefined

这是我的错误中间件

代码语言:javascript
复制
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文件夹内的页面中的路由

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-25 23:12:10

尝试这样使用errorMiddleWare

代码语言:javascript
复制
const router = nc({onError: errorMiddleWare});
connectDb();

//Routes
router.get(getAllProducts);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68519644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档