babel编译器将undefined和实际导出一起导出

时间:2017-11-15 20:59:40

标签: javascript node.js intellij-idea 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看到两个导出

enter image description here

也许这是智能问题,但它让我想到为什么babel这样做。

我正在使用:

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

Try it here

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

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

0 个答案:

没有答案