У меня есть простой пример приложения, в котором я использую модули es6, и я хочу перенести их на es5 (я не хочу запускать модули в браузере, хотя я знаю, что их поддержка составляет 90% +) с этой точки зрения).
Я езжу по кругу, сталкиваясь с одними и теми же ошибками и проблемами.
Вот моя настройка и то, что я пытаюсь достичь:
//add.js
export function add(x, y) {
return x + y;
}
//multiply.js
export function multiply(x, y) {
return x * y;
}
Затем я запускаю babel, чтобы вывести файл bundle.js
с использованием предустановки @babel/preset-env
.
// .babelrc
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"esmodules": true
}
}
]
]
}
Результат выглядит следующим образом:
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.add = add;
function add(x, y) {
return x + y;
}
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.multiply = multiply;
function multiply(x, y) {
return x * y;
}
Когда я запускаю свой файл html
в браузере, консоль регистрирует следующую ошибку:
bundle.js:3 Uncaught ReferenceError: exports is not defined
Мой вопрос такой:
Что выводит babel?
Являются ли они общими js модулями?
Как можно Я получаю модули es6 для запуска в браузере?