小编典典

Babel 6 改变了它导出默认值的方式

all

之前,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 模块、升级 Babel、眼泪和解决方案


阅读 63

收藏
2022-07-02

共1个答案

小编典典

你也可以使用这个插件export恢复旧的行为。

2022-07-02