相关疑难解决方法(0)

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

之前,巴贝尔会添加这条线module.exports = exports["default"].它不再这样做了.在我能做之前,这意味着什么:

var foo = require('./foo');
// use foo
Run Code Online (Sandbox Code Playgroud)

现在我必须这样做:

var foo = require('./foo').default;
// use foo
Run Code Online (Sandbox Code Playgroud)

这不是什么大不了的事(我猜它应该一直都是这样).问题是我有很多代码依赖于以前的工作方式(我可以将大部分代码转换为ES6导入,但不是全部转换).任何人都可以给我提示如何使旧的方式工作,而不必通过我的项目并解决这个问题(甚至一些关于如何编写codemod来做这个的说明将是非常光滑的).

谢谢!

例:

输入:

const foo = {}
export default foo
Run Code Online (Sandbox Code Playgroud)

使用Babel输出5

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
Run Code Online (Sandbox Code Playgroud)

使用Babel 6(和es2015插件)输出:

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var foo = {};
exports["default"] = foo;
Run Code Online (Sandbox Code Playgroud)

请注意,输出的唯一区别是module.exports = exports["default"].


编辑

您可能对我在解决我的具体问题后写的博客文章感兴趣:误解ES6模块,升级Babel,眼泪和解决方案

commonjs ecmascript-6 babeljs

193
推荐指数
3
解决办法
7万
查看次数

标签 统计

babeljs ×1

commonjs ×1

ecmascript-6 ×1