当前位置: 首页 > 知识库问答 >
问题:

ES6重新导出的值被打包到Getter中

刘凡
2023-03-14

有人能给我解释一下吗?假设我有这两个模块:

// moduleTwo.js

export const module2Func = () => {
  return 2
}

// moduleOne.js

export * from './moduleTwo'

export const module1Func = () => {
  return 1
}

然后我在某个地方导入moduleOne:

import * as final from './moduleOne'

console.log(final) 

最后的结果是这样的:

{ module2Func: [Getter], module1Func: [Function: module1Func] }

为什么module2Func被包装成Getter?是导出的语法做到了这一点?所有函数都按预期工作。我正在使用Babel 6来翻译代码。

谢谢你的任何解释!


共有1个答案

施招
2023-03-14

巴贝尔就是这样做的,以正确实现模块导入的引用绑定。您可以查看编译后的输出。

输入:

export * from 'foo';

输出:

'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});

var _foo = require('foo');

Object.keys(_foo).forEach(function (key) {
  if (key === "default") return;
  Object.defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _foo[key];
    }
  });
});
 类似资料:
  • 我在Spring重新打包时遇到了一个错误:无法执行目标组织。springframework。boot:spring boot maven插件:2.1.7。发布:对项目宠物诊所数据重新打包:目标组织的执行重新打包。springframework。boot:spring boot maven插件:2.1.7。发布:重新打包失败:找不到主类。 即使我用了真的 pom设置好了。由于我没有任何主类,如何解决

  • Node的 和ES6的 有什么区别?我试图弄清楚为什么在Node.js6.2.2中尝试 时会出现“__is not a constructor”错误。

  • 我目前有一个字符串生成器,用于导出到csv文件。CSV文件中导出的值在somw值中包含逗号。 有时,数据包含一个“,”导致其生成错误。 这会生成导出,但如何在一列中显示带有逗号的数据

  • 各种资源(infoq、jigsaw-dev、osdir)表明,在不同的java模块中拥有相同的包会导致< code > layerinstantionexception ,即使这些包在模块内部(非导出)。< br >这似乎与需求所说的正好相反: Java 编译器、虚拟机和运行时系统必须确保包含同名包的模块不会相互干扰。如果两个不同的模块包含同名的包,则从每个模块的角度来看,该包中的所有类型和成员仅

  • 我正在尝试创建一个导出多个ES6类的模块。假设我有以下目录结构: 和每个导出一个默认ES6类: 我目前有我的设置如下: 但是,我无法导入。我希望能够这样做,但找不到类: 在ES6模块中导出多个类的正确方法是什么?