能在没有'new'的情况下被调用"/>
TypeError:类构造函数 ErrorHandler 不能在没有'new'的情况下被调用
当我尝试初始化我的节点服务器时,我遇到了这个错误。 错误:
TypeError: Class constructor ErrorHandler cannot be invoked without 'new'
at Layer.handle [as handle_request] (C:\Users\emili\Desktop\shop\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\emili\Desktop\shop\node_modules\express\lib\router\index.js:328:13)
at C:\Users\emili\Desktop\shop\node_modules\express\lib\router\index.js:286:9
at Function.process_params (C:\Users\emili\Desktop\shop\node_modules\express\lib\router\index.js:346:12)
at next (C:\Users\emili\Desktop\shop\node_modules\express\lib\router\index.js:280:10)
at urlencodedParser (C:\Users\emili\Desktop\shop\node_modules\body-parser\lib\types\urlencoded.js:91:7)
at Layer.handle [as handle_request] (C:\Users\emili\Desktop\shop\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\emili\Desktop\shop\node_modules\express\lib\router\index.js:328:13)
at C:\Users\emili\Desktop\shop\node_modules\express\lib\router\index.js:286:9
at Function.process_params (C:\Users\emili\Desktop\shop\node_modules\express\lib\router\index.js:346:12)
显然,错误与Express有关,但我不知道我应该怎么做才能解决它。 这是我的 ErrorHandler 文件:
class ErrorHandler extends Error {
constructor(message, statusCode) {
super(message);
this.statusCode = statusCode
Error.captureStackTrace(this, this.constructor);
}
}
module.exports = ErrorHandler
这就是我导入它的方式:
const express = require("express");
const ErrorHandler = require("./utils/ErrorHandler");
const app = express();
//rest of the code//
app.use(ErrorHandler);
module.exports = app;
回答如下:
如果你需要处理错误你应该写一个中间件函数:
module.exports = (err, req, res, next) => {
if (err) {
return res.status(500).json({ message: 'Oops! Something went wrong' });
}
next();
};
像以前一样使用它:
const ErrorHandler = require("./utils/ErrorHandler");
app.use(ErrorHandler);
更多推荐
TypeError:类构造函数 ErrorHandler 不能在没有'new'的情况下被调用
发布评论