Я создаю модуль, который хочу опубликовать в NPM. Модуль экспортирует класс, для создания экземпляра которого используется ключевое слово new. Я хочу, чтобы пакет можно было импортировать, используя ключевое слово es5 require, а также ключевое слово import es6. Я перенес код в es5 для обратной совместимости. Когда я тестирую его с помощью импорта и переноса es5, код запускается, как и ожидалось. Однако, когда я тестирую его с помощью ключевого слова require (), я получаю сообщение об ошибке, что класс не является конструктором. Я создал примеры кодов, чтобы повторить проблему.
Это пример класса, который я перенес в es5 в файле index2.js
// 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
это ошибка, которую я получаю при запуске test1.js
{ default: [Function: MyClass] }
/Users/godfreytutu/Desktop/classe/test1.js:5
const greeter = new MyClass()
^
TypeError: MyClass is not a constructor
Пожалуйста, как мне это реализовать, чтобы я мог использовать ключевое слово require и ключевое слово import? Спасибо.