传递来自模块对象的所有导出

时间:2018-06-21 06:28:59

标签: node.js ecmascript-6 es6-modules

我有以下js文件:

// db.js
export default /* ... */;

export const tableName = /* ... */;

以及以下模拟(使用笑话):

const MockDb = jest.genMockFromModule('../db.js');

export default MockDb.default;
export const { tableName } = MockDb;

现在,如果我将导出添加到原始db.js文件中,则还必须相应地触摸模拟。我宁愿模拟文件仅自动导出MockDb对象(这是jest按住default键和每次导出的其他命名属性生成的模块对象)中的所有导出内容

According to MDNexport * from X 仅当X是引用模块的字符串时,语法才有效。我能以某种方式export * from <moduleObject>吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我能以某种方式export * from <moduleObject>吗?

不,您不能。导出名称必须是静态声明的,无法在运行时从对象确定它们。

正确的方法是使用模块加载器插件,当您执行import … from '../db.js!jest';之类的操作时,该插件会自动调用Jest。