【问题标题】:es6 import behavior is incorrectes6 导入行为不正确
【发布时间】:2016-03-17 08:05:39
【问题描述】:

我正在做一个新项目,之前我在做类似 2 的事情,可以毫无问题地导入 get 函数。不知何故,今天 2 给了我 undefined 但 1 给了我正确的答案。有谁知道这是为什么?

ps:我的node版本是4.0.0

import api from "../../utils/APIUtils"; // --- 1
let get = api.get;
console.log(get); // function

import { get } from '../../utils/APIUtils'; // --- 2
console.log(get); // undefined now..

export default const APIUtils = {
  get(endpoint, query, options, done) { done(123) }
}

p.s:我在这里看到了类似 1 的用法,它们工作正常。

导出默认xxx: https://github.com/gpbl/isomorphic500/blob/master/src/utils/APIUtils.js

从括号中导入:https://github.com/gpbl/isomorphic500/blob/master/src/services/photo.js

【问题讨论】:

  • 为什么是 what? 1 和 2 表示不同的东西,它们不能互换使用。
  • 行为正确。如果它真的有效,那么它是不正确的。你不需要const APIUtils = btw。

标签: ecmascript-6 babeljs


【解决方案1】:

使用大括号导入用于非默认导出。 由于APIutils 是默认导出的,因此您应该在不带大括号的情况下导入它。

编辑:这是MDN的解释

【讨论】:

  • 我明白了。但我不明白的是,它在我之前从事的一个项目中有效。你介意看看吗?
  • 我刚刚对其进行了测试,该项目中的示例不应该工作。可能是您在该项目中使用的 ES6 转译器中的错误。也许检查你是否在两个 + 相同版本上使用 babel
  • 但是为什么会有这样的行为呢?我希望导入的对象是 const APIUtils 对象,api.get{get} 都在寻找 APIUtils.get 属性不是吗?
  • 只是因为get没有导出,只有APIUtils(带着他所有的属性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-23
  • 2019-02-02
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 2018-01-04
相关资源
最近更新 更多