我正在创建一个要发布到NPM的模块。该模块导出应使用new关键字实例化的类。我希望该软件包可以使用es5 require关键字以及es6 import关键字导入。为了向后兼容,我已将代码编译到es5。当我使用es6 import和es5进行测试时,代码按预期运行。但是,当我使用require()关键字对其进行测试时,出现一个错误,该类不是构造函数。我已经创建了示例代码来复制问题。
这是一个示例类,我将其转换为文件index2.js中的es5
// classe.js
class MyClass {
constructor() {
this.name = 'name'
}
greet() {
return `Hello ${this.name}`;
}
}
export default MyClass;
这是es5实现。我希望由于index2已经在es5中,因此应该通过执行node test1
// test1.js
const MyClass = require('./index2');
console.log(MyClass)
const greeter = new MyClass()
const greeting = greeter.greet();
console.log(greeting)
这是es6实现。当我转换它并以node test2
执行时,它将产生预期的结果。
// test2.js
import MyClass from './index2';
console.log(MyClass)
const greeter = new MyClass()
const greeting = greeter.greet();
console.log(greeting)
[Function: MyClass]
Hello name
{ default: [Function: MyClass] }
/Users/godfreytutu/Desktop/classe/test1.js:5
const greeter = new MyClass()
^
TypeError: MyClass is not a constructor
请,我应该如何实现它以便可以使用require关键字和import关键字?谢谢。