Ошибка типа - это не конструктор

Хотел создать экземпляр модуля в javascript ES6 и передать его в 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);

Я пытаюсь, чтобы в журнале консоли отображался пустой объект. Вместо этого я получаю -- Uncaught TypeError: _track.Track не является конструктором


person Yasir    schedule 10.10.2016    source источник
comment
импортировать трек из './track'   -  person Kevin    schedule 10.10.2016


Ответы (2)


Проблема в том, как вы импортируете Track в index.js. Вам нужно либо импортировать так:

import Track from './track';

Или в track.js нужно экспортировать так:

export {Track}
person Kevin    schedule 10.10.2016

Вы экспортируете Track по умолчанию, поэтому вам следует использовать импорт по умолчанию. Изменять

import { Track } from './track';

to

import Track from './track';

См. Что такое экспорт по умолчанию в javascript?


Когда вы делаете import { Track } from './track', вы пытаетесь получить доступ к свойству Track экспортируемого объекта (который является классом Track), которое не определено (поэтому это не конструктор).

person Michał Perłakowski    schedule 10.10.2016