首页 > 解决方案 > 是否可以在单个语句中从另一个模块导出 * 和默认值?

问题描述

情况

我有一个moduleA包含两个default和命名导出的模块:

// Module A
export {
  A1 as default,
  A2,
  A3,
};

在另一个模块moduleB中,我想从moduleAdefault和命名的导出)导出(聚合)所有内容。我这样做了:

// Module B
export * from "moduleA";

然后在另一个模块中moduleC我 importmoduleBdefault导出,我希望它是default模块 A 的导出:

// Module C
import ModuleB from "moduleB";

ModuleB下定决心undefined

我通过将模块 B 更改为以下来解决此问题,它按预期工作:

// Module B
export { default } from "moduleA";
export * from "moduleA";

问题

我可以以某种方式在模块 B 中以单行方式进行导出吗?如下所示(这是无效的语法)。

export { default, * } from moduleA;

旁白:为什么不export * from <module>导出default导入/导出?

标签: javascriptes6-modules

解决方案


你不能。

根据ecma规范,export * from "moduleA";不会从引用的模块重新导出默认绑定。

有一个提案,目前处于第一阶段,可能允许你这样做。


推荐阅读