如何在index.js桶中导出默认模块

时间:2016-12-22 19:18:14

标签: javascript es6-module-loader es6-modules

我正在尝试使用index.js桶导出默认模块,但似乎无法使其工作。它适用于命名导出,但不适用于默认导出。

简化的项目结构

/hellos
  /components
    Hello.js
    Hellos.js
    index.js
  index.js
App.js

/hellos/component/Hellos.js

...
export default Hellos

/hellos/component/index.js

export * from './Hello';
export * from './Hellos';

/hellos/index.js

export * from './components'
export * from './actions'
export * from './constants'
export * from './reducers'

App.js

import Hellos from './hellos'
console.log(Hellos) // <- undefined

上面导入的Hellos模块始终未定义。

我可以使用命名导出或App.js中的直接导入(即import Hellos from './hellos/component/Hellos')来使用它,但我认为这是一种不好的做法,只希望使用import Hellos from '/hellos'

我怀疑问题出在index.js桶上,但我无法解决问题。请帮忙。

2 个答案:

答案 0 :(得分:15)

使用以下行:

export { default as MyModule } from 'src/MyModule'

希望它符合您的需求, 欢呼声

答案 1 :(得分:0)

对于使用babel的人

.babelrc 中使用像这样的babel-plugin-transform-export-extensions插件:

  "plugins": [
    "babel-plugin-transform-export-extensions",
    "transform-es2015-modules-commonjs"
  ]

然后像这样安装插件:

npm install --save-dev babel-plugin-transform-export-extensions
npm install --save-dev babel-plugin-transform-es2015-modules-commonjs

然后你可以在index.js中使用export就像这样:

export simple from './simple';
export restClient from './jsonServer';
export * from './types';

对于使用早期babel版本的用户,只需使用commonjs模块。