在此之前,babel会添加module.exports = exports["default"]
行。它不再这样做了。这意味着,在我能做到
var foo = require('./foo');
// use foo
现在我必须这样做:
var foo = require('./foo').default;
// use foo
没什么大不了的(我猜这就是它一直以来应该有的样子)。 问题是我有很多代码依赖于以前的工作方式(我可以将大部分代码转换为ES6导入,但不能全部转换)。有没有人能给我一些建议,告诉我如何让旧的方式工作,而不必通过我的项目和修复这个(甚至是一些关于如何写一个代码模块来做到这一点的指导将是非常巧妙的)
谢谢!
例子:
输入:
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"]
。
你可能会对我在解决我的具体问题后写的这篇博客感兴趣:误解ES6模块,升级通天塔,眼泪,和一个解决方案