我在我的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;发布于 2021-07-25 23:12:10
尝试这样使用errorMiddleWare。
const router = nc({onError: errorMiddleWare});
connectDb();
//Routes
router.get(getAllProducts);https://stackoverflow.com/questions/68519644
复制相似问题