Время выполнения Traceur: выражение Super должно быть нулевым или функцией, а не undefined

Изучите ES6 и сразу выполните следующую ошибку Super expression must either be null or a function, not undefined. Действительно не знаете, где моя проблема, если кто-то может помочь, это будет здорово.

main.js

'use strict'

import Backbone from 'exoskeleton';
import App from './views/App';


var onDOMReady = () => {
    console.log('inside dom ready');
    window.app = new App();
}

if(document.readyState === 'complete' || document.readyState === 'interactive' || document.readyState === 'loaded' ) {
    onDOMReady();
} else {
    document.addEventListener('DOMContentLoaded', onDOMReady);
}

App.js

'use strict'

import Backbone from 'exoskeleton';

class App extends Backbone.View {

    initialize () {
        console.log('App: Init');
    }

    render () {
        console.log('App: Render');
    }

}

export default App;

Ответ 1

Я получил эту ошибку, потому что у меня была циклическая структура импорта. Один модуль импортирует другой и наоборот.

Ответ 2

Backbone.View может быть undefined в вашем случае. Этот фрагмент, который производит эту ошибку, это

if (typeof parent !== "function" && parent !== null) {
  throw new TypeError("Super expression must either be null or a function, not " + typeof parent);
}

Ответ 3

Проблема для меня была в том, что я использовал

import { EditForm } from '../EditForm'

вместо

import EditForm from '../EditForm'

Хуже того, сообщение об ошибке жаловалось на совершенно несвязанный компонент, который не был изменен за несколько недель. Безопасно сказать, что это вызвало у меня головные боли. Просто подумайте о том, что вы недавно изменили, и вероятно, что там будет ошибка.