Traceur运行时:超级表达式必须为null或函数,而不是未定义

时间:2015-02-16 22:36:02

标签: javascript ecmascript-6

学习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;

3 个答案:

答案 0 :(得分:8)

我收到此错误,因为我有一个循环导入结构。一个模块导入另一个模块,反之亦然。

答案 1 :(得分:6)

在您的情况下,

Backbone.View可能未定义。产生此错误的代码段为

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

答案 2 :(得分:4)

对我来说问题是因为我使用了

import { EditForm } from '../EditForm'

而不是

import EditForm from '../EditForm'

更糟糕的是,错误消息抱怨一个完全不相关的组件,这个组件在几周内没有被修改过。可以说这个让我有些头疼。回想一下你最近修改的内容,可能会出现错误。