类型错误 - 不是构造函数

Yas*_*sir 6 javascript transpiler ecmascript-6 webpack

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

export default class Track {
  constructor() {
    this.o = {};
  }
}
Run Code Online (Sandbox Code Playgroud)

另一个是index.js -

import { Track } from './track';

const track = new Track();
console.log(track);
Run Code Online (Sandbox Code Playgroud)

我试图让控制台日志显示一个空对象.相反,我得到 - Uncaught TypeError:_track.Track不是构造函数

Mic*_*ski 8

您是Track默认导出的,因此您应该使用默认导入.更改

import { Track } from './track';
Run Code Online (Sandbox Code Playgroud)

import Track from './track';
Run Code Online (Sandbox Code Playgroud)

请参阅javascript中的"导出默认值"是什么?


当你这样做时,import { Track } from './track'你试图访问Track导出对象的属性(这是Track类),这是未定义的(所以它不是构造函数).


Kev*_*vin 5

问题是要导入的方式Trackindex.js.您需要像这样导入:

import Track from './track';
Run Code Online (Sandbox Code Playgroud)

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

export {Track}
Run Code Online (Sandbox Code Playgroud)