【问题标题】:import is not defined erorr using es6使用 es6 未定义导入错误
【发布时间】:2017-07-14 22:35:08
【问题描述】:

我尝试按照这里的教程进行操作。我已经安装了 babel,但我无法检测到我在下面犯了什么错误

sum.js

export default sum = (a, b) => {
    return a + b;
}

sum.test.js

import sum from './sum';

test('1 + 2 should equal to 3', () => {
    expect(sum(1,2)).toBe(3);
});

错误是 sum.test.js 中没有定义 sum。 2个文件放在同级目录中。

【问题讨论】:

  • 你不需要命名函数,这样可以更容易。 export default (a, b) => a + b;

标签: javascript reactjs ecmascript-6 jestjs


【解决方案1】:

我想,问题是你忘了在sum.js中定义sum,这样写:

let sum;
export default sum = (a, b) => {
    return a + b;
}

let sum = (a, b) => {
    return a + b;
}

export default sum;

注意:如果是default export,您可以删除名称,因为default export 每个文件只有一个。在导入时,您可以使用任何名称,如下所示:

import ABC from './sum';

更新

定义函数有两种方式:

1: function sum(){}
2: var sum = function(){}

所以如果你使用第一个然后直接导出它(无需定义):

export default sum(){}

但是如果您使用第二个,那么您需要定义变量,因为您将函数定义存储在该变量中:

let sum;

export default sum = () => {}

let sum = () => {}

export default sum;

查看这篇文章:https://danmartensen.svbtle.com/build-better-apps-with-es6-modules

【讨论】:

  • export default sum = (a, b) => {} 我以为这个总和就是函数的名称?
  • 您的 sn-p 与 sum = (a, b) => {}; export default sum 相同,这意味着 letvar,因此永远不会声明 sum 变量。
  • 为什么在这种情况下使用let 而不是const
  • 在这种情况下,您也可以使用 const,阅读这 3 个 let、car const 之间的差异。
【解决方案2】:

在export中使用前需要先声明sum

像 var sum;

【讨论】:

    猜你喜欢
    • 2016-05-23
    • 2016-06-24
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多