ES6和导入多个导出问题

时间:2018-04-06 11:54:04

标签: javascript ecmascript-6 es6-modules

我正在尝试使用create-index处理index.js,但我遇到了让一切工作正常的问题。

我有以下内容:

/modules/utils.js

export function func1(){ ... }

export function func2(){ ... }

export function func3(){ ... }

/modules/index.js [自动创建]

export { default as utils } from './utils.js';

/main.js

import utils from './modules';
utils.func1();

但无论我做什么,我都无法访问utils。我尝试了几种从./models导入的方法,但我能得到的最好的是import * as modules from './modules'但是我实际上无法使用任何东西。

在这种情况下,我不确定我是在做蠢事还是在使用index.js时出错了。

1 个答案:

答案 0 :(得分:3)

您的utils.js模块没有默认导出,因此从模块索引重新导出它将无济于事。

您可以使用

// main.js
import * as utils from './modules/utils';
utils.func1();

// modules/index.js
export * from './utils.js';

// main.js
import * as modules from './modules';
modules.func1();

// modules/index.js
import * as utils from './utils.js';
export { utils }
// export * as utils from './utils.js' is proposed and supported by transpilers

// main.js
import { utils } from './modules';
utils.func1();

(您也可以从index.js默认导出utils,但这没有用)

如果你想让一个utils对象从utils.js导出的函数作为方法,那么我会推荐第一种或最后一种方法。当然,如果modules文件夹中只有一个文件,那么删除它并将你的utils模块放在根文件夹中也是明智的。