之前,babel 会添加这一行module.exports = exports["default"]。它不再这样做了。这意味着在我能做之前:
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 模块、升级 Babel、眼泪和解决方案
你也可以使用这个插件来export恢复旧的行为。
export