Следующий js: Промежуточное программное обеспечение с ошибкой возвращает разрешение.статус не определен

#node.js #next.js #next-connect

Вопрос:

Я использую next-connect в своем next.js приложение для запуска кода на стороне сервера. Я использую промежуточное программное обеспечение с пользовательскими ошибками, но оно выдает ошибку как

 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;

 

Ответ №1:

Попробуйте использовать errorMiddleWare этот способ.

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

//Routes
router.get(getAllProducts);
 

Комментарии:

1. Спасибо, это сработало. Значит, для ошибки мы должны добавить onError? Это не было упомянуто в документации

2. На самом деле они упоминали! «Он не поддерживает шаблон промежуточного программного обеспечения для обработки ошибок. Используйте опции. Вместо этого ошибка». Проверьте первый пример в разделе API здесь npmjs.com/package/next-connect