类型错误 - 不是构造函数

时间:2016-10-10 18:52:38

标签: javascript ecmascript-6 webpack transpiler

想要在ES6 javascript中实例化一个模块并转换为ES5。我在我的项目中设置了一个新类,即es6 / webpack。 我有2个文件: track.js有以下内容 -

export default class Track {
  constructor() {
    this.o = {};
  }
}

另一个是index.js -

import { Track } from './track';

const track = new Track();
console.log(track);

我正在尝试让控制台日志显示一个空对象。 相反,我得到 - 未捕获的TypeError:_track.Track不是构造函数

2 个答案:

答案 0 :(得分:8)

您默认导出Track,因此您应该使用默认导入。变化

import { Track } from './track';

import Track from './track';

请参阅What is "export default" in javascript?

执行import { Track } from './track'时,您试图访问导出对象的Track属性(Track类),这是未定义的(因此它不是构造函数)。

答案 1 :(得分:5)

问题在于您在Track中导入index.js的方式。您需要像这样导入:

import Track from './track';

或者在track.js中你需要像这样导出它:

export {Track}