Javascript babel编译器将未定义的和实际的导出一起导出

Javascript babel编译器将未定义的和实际的导出一起导出,javascript,node.js,intellij-idea,babeljs,Javascript,Node.js,Intellij Idea,Babeljs,有人能解释一下为什么巴贝尔会编写以下内容: import {resolve} from "path"; export const exportedConst = "value"; 致: 如果我导出了exportedConst,而没有导入任何其他模块: export const exportedConst = "value"; 它将其编译为: "use strict"; Object.defineProperty(exports, "__esModule", { value: true

有人能解释一下为什么巴贝尔会编写以下内容:

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

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

export const exportedConst = "value";
它将其编译为:

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var exportedConst = exports.exportedConst = "value";
为什么生产这条线? exports.exportedConst=未定义

然后像这样输出

var exportedConst = exports.exportedConst = "value";
这会使IDE看到两个导出

也许这是intelliJ的问题,但它让我思考为什么巴贝尔会这样做

我正在使用:

  • nodejs:v8.5.0
  • 巴别塔cli:6.26.0(巴别塔核心6.26.0)
  • 巴别塔预设环境: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

注意,这也可以通过网站上的babel进行复制,因此严格来说,不需要使用命令行来测试它(为试图回答的人节省一些时间)。我不确定它的意图,但它可能来自与吊装相关的。。。
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