es6导出/导入多个类 - instanceof返回false

时间:2016-12-21 10:47:50

标签: node.js ecmascript-6 babeljs

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)。

1 个答案:

答案 0 :(得分:3)

问题不在于import。这是巴别塔。内置类的继承是ES6 feature。它在转换的ES5代码中不会很好用。

上述代码可能会导致inst混合为ValidationErrorError的实例。

解决方案是不转换Node已经支持的功能。应该使用自定义预设,例如babel-preset-es2015-node6babel-preset-eslatest-node6