当我在ES6导入上运行babel时,它会一直重命名我的导入,直到我的源代码中:
一个命名导入是通过重命名来实现的:
为什么babel会这样做?背景:在Chrome中调试应用程序时,我需要转到源文件以查找变量如何被重命名以获取其当前值,因为Chrome不知道
为什么babel不能将命名导入转换为
import {foo as bar} from './bar';
console.log(bar);
变得
'use strict';
var _bar = require('./bar');
console.log(_bar.foo);
一个命名导入是通过重命名来实现的:
import {bar} from './bar';
console.log(bar);
为了
'use strict';
var _bar = require('./bar');
console.log(_bar.bar);
对于默认导入,情况甚至更糟,因为会多添加一个2:
import bar from './bar';
console.log(bar);
成为
'use strict';
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _bar = require('./bar');
var _bar2 = _interopRequireDefault(_bar);
console.log(_bar2['default']);
为什么babel会这样做?背景:在Chrome中调试应用程序时,我需要转到源文件以查找变量如何被重命名以获取其当前值,因为Chrome不知道
bar
已被重命名为_bar.bar
… 这使得使用WebStorm等工具进行调试几乎不可能…为什么babel不能将命名导入转换为
'use strict';
var _bar = require('./bar');
var bar = _bar.bar;
console.log(bar);
默认导入到
'use strict';
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _bar = require('./bar');
var _bar2 = _interopRequireDefault(_bar);
var bar = _bar2['default']
console.log(bar);