ES6/Babel中重新导出整个模块

8
假设我有一个需要重新导出的模块:
//exportme.js
export default 'EXPORTME';
export const test = () => console.log('test function');

//reexport.js
export * from './exportme.js'

当我导入reexport.js时,来自exportme.js的默认输出不可用。
//app.js
import reexport from './reexport.js'

console.log(reexport) //undefined

为了使其正常工作,我必须将reexport.js更改为以下内容。

export * from './exportme.js'
export default from './exportme.js'

有没有更简单的方法来做到这一点,或者可以将其合并为一条语句?

export default, * from './exportme.js' 不起作用。

我正在使用最新的babel和transform-export-extensions


2个回答

5

exportme.js中的默认导出不可用

是的,通配符导出不会重复导出默认导出。export * from ... 的目的在于允许从多个模块重新导出,从多个模块导出 default 只会导致冲突。因此,您必须明确指定它(如果您需要它的话,通常没有默认导出与命名导出并存)。

是否有更简单的方法来执行此操作,或者是否可以将其合并为一个语句?

否,你所拥有的两行就是正确的方法。


2

正如Bergi所写,使用ES 6导出没有一行代码可以实现此功能。但是,您可以简单地要求重新导出的模块并将结果分配给module.exports

module.exports = require('./exportme.js')

这很聪明,也很有效。不幸的是,我试图避免使用 require! - wlingke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接