test1.js
export class ValidationError extends Error {
constructor (msg) {
super(msg)
}
}
export class ServerError extends Error {
constructor (msg) {
super(msg)
}
}
test2.js
import * as errors from './test1'
const inst = new errors.ValidationError('msg')
console.log(inst instanceof errors.ValidationError)
当我运行test2时,输出为false
(预期为true
)。
答案 0 :(得分:3)
问题不在于import
。这是巴别塔。内置类的继承是ES6 feature。它在转换的ES5代码中不会很好用。
上述代码可能会导致inst
混合为ValidationError
和Error
的实例。
解决方案是不转换Node已经支持的功能。应该使用自定义预设,例如babel-preset-es2015-node6
或babel-preset-eslatest-node6
。