babel编译器导出未定义和实际导出在一起

有人可以解释为什么babel编译以下内容:

import {resolve} from "path"; export const exportedConst = "value"; 

至:

 "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.exportedConst = undefined; var _path = require("path"); var exportedConst = exports.exportedConst = "value"; 

如果我导出了exportedConst而不导入任何其他模块:

 export const exportedConst = "value"; 

它将其编译为:

 "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var exportedConst = exports.exportedConst = "value"; 

为什么会产生这一行? exports.exportedConst = undefined;

并像这样导出

 var exportedConst = exports.exportedConst = "value"; 

这会导致IDE看到两个导出

在这里输入图像描述

也许这是智力问题,但这让我想到为什么巴贝尔这样做。

我在用:

  • nodejs:v8.5.0
  • babel-cli:6.26.0(babel-core 6.26.0)
  • babel-preset-env:1.6.1

在这里尝试

或者如果你想在本地重现,这是一个快速的单行命令

 mkdir stackoverflow-questin && cd stackoverflow-questin && npm init -y && npm install babel-cli babel-preset-env && echo 'import {resolve} from "path";\nexport const exportedConst = "value";' > index.js && npx babel index.js --out-file index.compiled.js --presets=env