超级表达式必须为null或函数,而不是对象

时间:2017-07-06 20:35:00

标签: javascript ecmascript-6 babel

我得当我运行 index.js

时,超级表达式必须为null或函数,而不是对象错误

我看到另一篇帖子here有类似的错误消息。但看起来这与反应有关!

base.js

   export default class Base{
        constructor(title){
            console.log(title);
        }
    }

Class1.js

import * as Base from './base';

export default class Class1 extends Base{
    constructor(title){
        super(title);
    }
}

index.js

import * as Class1 from './class1';
'use strict';

function check() {
    var c = new Class1('from Index.js');
}

check();

.babelrc

{     “预设”:[         “ES2015”         “阶段1”     ] }

依赖关系

dependencies": {
    "babel-cli": "^6.24.1",
    "babel-eslint": "^7.2.3",
    "babel-plugin-add-module-exports": "^0.2.1",
    "babel-plugin-syntax-export-extensions": "^6.13.0",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-1": "^6.24.1",
    "babel-register": "^6.24.1"
  }

请帮忙!提前谢谢!

2 个答案:

答案 0 :(得分:6)

您正在进行名称空间导入(* as …),这些名称空间导入会在变量中创建名称空间对象,这些函数确实不像错误消息所说的那样。您将要导入默认导出:

import Base from './base';

import Class1 from './class1';

答案 1 :(得分:1)

导入时,您将导入整个js文件,这是一个对象。您只需从js文件中导入该类。

仅使用课程

import {myMember} from 'my-module';

仅导入名为myMember的成员。

你这样做

import * as myModule from 'my-module';

将文件的所有成员导入为myModule对象的子成员。

请参阅Importing in JS(此处的示例)