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

Traceur runtime: Super expression must either be null or a function, not undefined

本文关键字:函数 未定义 null 运行时 表达式 Traceur      更新时间:2023-11-27

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

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

Backbone.View在您的情况下可能未定义。产生这个错误的代码段是这样的,

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

我的问题是因为我使用了

import { EditForm } from '../EditForm'

而不是

import EditForm from '../EditForm'

更糟糕的是,错误消息抱怨一个完全不相关的组件已经好几个星期没有修改了。可以肯定地说,这个让我头疼。只要回想一下你最近修改的内容,错误很可能就在那里。