Estoy haciendo un ErrorHandler.js para manejar el error en mi API nextJs, anteriormente usé esto en mi servidor node-express. Pero cuando la API devuelve un error en lugar de mostrarme el error, me devuelve esto: TypeError: _utils_errorhandler__WEBPACK_IMPORTED_MODULE_1___default(...) is not a constructor He creado una clase conocida como Errorhandler aquí está el código:
Archivo ../utils/errorHandler.js:
class ErrorHandler extends Error { constructor(message, statusCode) { super(message); this.statusCode = statusCode; Error.captureStackTrace(this, this.constructor); } } module.exports = ErrorHandler;Luego hice una función de middleware usando esta clase y marqué todos mis errores de inicio, aquí está el código:
Archivo ../../middleware/error.js:
const ErrorHandler = require("../utils/errorhandler"); module.exports = (err, req, res, next) => { err.statusCode = err.statusCode || 500; err.message = err.message || "Internal Server Error"; // Wrong Mongodb Id error if (err.name === "CastError") { const message = `Resource not found. Invalid: ${err.path}`; err = new ErrorHandler(message, 400); } // Mongoose duplicate key error if (err.code === 11000) { const message = `Duplicate ${Object.keys(err.keyValue)} Entered`; err = new ErrorHandler(message, 400); } // Wrong JWT error if (err.name === "JsonWebTokenError") { const message = `Json Web Token is invalid, Try again `; err = new ErrorHandler(message, 400); } // JWT EXPIRE error if (err.name === "TokenExpiredError") { const message = `Json Web Token is Expired, Try again `; err = new ErrorHandler(message, 400); } res.status(err.statusCode).json({ success: false, message: err.message, }); };Intenté cambiarlo al módulo ES6 pero no funcionó para mí. El código API está aquí:
import connectToMongo from "../../middleware/db"; const ErrorHandler = require("../../middleware/error"); const handler = (req, res, next) => { return next(new ErrorHandler("Test successful", 404)); }; export default connectToMongo(handler);Estoy probando ErrorHandler aquí y me devuelve el mismo error en todas mis rutas API. También devuelve next() no es una función algunas veces.
El error completo está aquí:
error - (api)\pages\api\test.js (5:14) @ handler TypeError: _utils_errorhandler__WEBPACK_IMPORTED_MODULE_1___default(...) is not a constructor 3 | 4 | const handler = (req, res, next) => { > 5 | return next(new ErrorHandler("Test successful", 404)); | ^ 6 | }; 7 | 8 | export default connectToMongo(handler);