之前,babel 会添加以下行module.exports = exports["default"]
。它不再这样做了。这意味着在我能做之前:
var foo = require('./foo');
// use foo
现在我必须这样做:
var foo = require('./foo').default;
// use foo
没什么大不了的(我猜这本来就是应该的)。
问题是我有很多代码取决于过去的工作方式(我可以将其中大部分转换为 ES6 导入,但不是全部)。任何人都可以给我一些关于如何使旧方式工作的提示,而不必通过我的项目并修复这个问题(或者甚至一些关于如何编写代码模块来执行此操作的说明将非常流畅)。
Thanks!
Example:
Input:
const foo = {}
export default foo
使用 Babel 5 输出
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
使用 Babel 6(和 es2015 插件)输出:
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
请注意,输出中的唯一区别是module.exports = exports["default"]
.
Edit
您可能对我在解决具体问题后写的这篇博文感兴趣:对 ES6 模块的误解、升级 Babel、泪水和解决方案 https://kcd.im/tears