Javascript Nodejs自定义错误类抛出;TypeError:ValidationError不是构造函数;
看看其他一些关于构建类的问题,我不知道我在这里做错了什么 我有一个名为ValidationError的自定义错误类,它位于ValidationError.js文件中:Javascript Nodejs自定义错误类抛出;TypeError:ValidationError不是构造函数;,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,看看其他一些关于构建类的问题,我不知道我在这里做错了什么 我有一个名为ValidationError的自定义错误类,它位于ValidationError.js文件中: class ValidationError extends Error { constructor(message, errors) { super(message); this.errors = errors; this.name = this.constructor.name; if (type
class ValidationError extends Error {
constructor(message, errors) {
super(message);
this.errors = errors;
this.name = this.constructor.name;
if (typeof Error.captureStackTrace === 'function') {
Error.captureStackTrace(this, this.constructor);
} else {
this.stack = (new Error(message)).stack;
}
}
}
module.exports = ValidationError;
我需要在另一个文件中使用该类,如下所示:
const { ValidationError } = require('./validationError');
这样称呼它,这是抛出错误的那一行:
const validationError = new ValidationError('JSON failed validation.', result.errors);
抛出的错误是,“TypeError:ValidationError不是构造函数”
我在节点10.6.4上
那么我做错了什么?谢谢你的帮助 您不是使用
.ValidationError
构造函数导出对象,而是直接将类设置为模块.exports
。因此,在您的导入中,它应该是
const ValidationError = require('./validationError');
并且不要使用解构语法。您不是使用
.ValidationError
构造函数导出对象,而是直接将该类设置为模块。导出
。因此,在您的导入中,它应该是
const ValidationError = require('./validationError');
不要使用解构语法。在我看来很好。您是使用本机ES6还是有一个透明步骤?我建议使用
Error.captureStackTrace(这个是new.target)
(虽然实际上这应该在super
调用中发生)在我看来很好。您是使用本机ES6还是有一个透明步骤?我建议使用Error.captureStackTrace(这个是new.target)
(虽然实际上这应该已经发生在super
调用中了)