【问题标题】:ES6 and importing issue with multiple exportsES6 和多个导出的导入问题
【发布时间】:2018-04-06 11:54:04
【问题描述】:

我正在尝试让 index.js 与 create-index 一起工作,但我在让一切正常工作时遇到问题。

我有以下:

/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();

但无论我做什么,我都无法仅访问实用程序。我已经尝试了几种从 ./models 导入的方法,但我能得到的最好的方法是 import * as modules from './modules',但实际上我什么都不能使用。

不确定我是否在做一些愚蠢的事情,或者在这种情况下我对 index.js 的使用是否错误。

【问题讨论】:

  • import { utils } from 'modules'; 有效吗?我不知道create-index,但不带大括号的导入是默认导入,而带大括号的export 是命名导出

标签: javascript ecmascript-6 es6-modules


【解决方案1】:

您的 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 @987654321@ and supported by transpilers

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

(您也可以从 index.js 中默认导出 utils,但这没有任何意义)

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

【讨论】:

  • 感谢您的回答。查看已关闭的票证后,我发现该模块不是那么聪明,并且没有检查给定文件中的导出。所以不会处理多个名称导出。现在我将像以前一样直接调用模块,同时寻找更智能的替代品。
猜你喜欢
  • 1970-01-01
  • 2017-06-29
  • 2018-01-15
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
相关资源
最近更新 更多