Прежде, babel добавит строку module.exports = exports["default"]
. Это уже не так. Что это означает, прежде чем я мог бы сделать:Babel 6 изменяет способ экспорта по умолчанию
var foo = require('./foo');
// use foo
Теперь я должен сделать это:
var foo = require('./foo').default;
// use foo
не большое дело (и я предполагаю, что это то, что должно было быть все вместе) , Проблема в том, что у меня много кода, зависящего от того, как все работает (я могу преобразовать большую часть его в импорт ES6, но не все). Может ли кто-нибудь дать мне советы о том, как сделать старый способ работы без необходимости проходить мой проект и исправить это (или даже некоторые инструкции о том, как писать код, чтобы сделать это, были бы довольно гладкими).
Спасибо!
Пример:
Входной сигнал:
const foo = {}
export default foo
Вывод с Вавилонской 5
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
выход с Вавилонской 6 (и es2015 плагин):
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
Обратите внимание, что только разница в t он выводит module.exports = exports["default"]
.
Редактировать
Вы можете быть заинтересованы в этом BlogPost я написал после того, как решить мой конкретный вопрос: Misunderstanding ES6 Modules, Upgrading Babel, Tears, and a Solution
Мне любопытно, какие случаи, когда нужно 'требуют 'если вы работаете в базе кода, которая использует Babel? Скорее всего, есть и другие подходы, которые позволят вам избежать этого. – loganfsmyth
Я использую функцию Webpack, которая не требует кода, если она найдена в мертвом коде, например: 'if (false) {require ('./ foo')}', поскольку webpack пропустил бы фактически, включая 'foo.js' в результирующий пучок. – kentcdodds
В чем дело? Если это условие доступно в вашей конфигурации webpack, может быть другой вариант. – loganfsmyth