以不同的名称导入 ES6 Class
Importing ES6 Class under a different name
使用 gulp, browserify & babelify、exporting/import classes 工作正常,直到我尝试以不同的名称导入相同的 class:
// Acme/DefaultInit.js
export default class DefaultInit {
constructor() {
console.log('hello');
}
}
// App/Init.js
import * as B from "../Acme/DefaultInit";
class Init extends B.DefaultInit {
constructor() {
super();
console.log('how are you?');
}
}
所以当我运行 gulp 构建脚本时,错误是:
TypeError: Super expression must either be null or a function, not undefined
来自 babel 生成的代码
if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); }
我哪里做错了?请注意,没有 jslint 错误
您正在导出 DefaultInit
作为默认值,因此它实际上可以从 B.default
而不是 B.DefaultInit
。
如果您希望能够做到 B.DefaultInit
删除 class DefaultInit
之前的 default
或者将 import * as B
替换为 import DefaultInit
.
使用 gulp, browserify & babelify、exporting/import classes 工作正常,直到我尝试以不同的名称导入相同的 class:
// Acme/DefaultInit.js
export default class DefaultInit {
constructor() {
console.log('hello');
}
}
// App/Init.js
import * as B from "../Acme/DefaultInit";
class Init extends B.DefaultInit {
constructor() {
super();
console.log('how are you?');
}
}
所以当我运行 gulp 构建脚本时,错误是:
TypeError: Super expression must either be null or a function, not undefined
来自 babel 生成的代码
if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); }
我哪里做错了?请注意,没有 jslint 错误
您正在导出 DefaultInit
作为默认值,因此它实际上可以从 B.default
而不是 B.DefaultInit
。
如果您希望能够做到 B.DefaultInit
删除 class DefaultInit
之前的 default
或者将 import * as B
替换为 import DefaultInit
.