【问题标题】:Javascript import function syntax [duplicate]Javascript导入函数语法[重复]
【发布时间】:2017-08-26 17:51:21
【问题描述】:

我正在尝试从另一个模块导入一个函数,但在运行时出现错误:

TypeError: _this.getData is not a function.

数据.js

function getData() {
  return [
    { id: 1,
      name: 'Pluto',
      type: 'Dwarf Planet'
    },
    { id: 2,
      name: 'Neptune',
      type: 'Planet'
    }
  ]
}
export { getData }

worker.js

import getData from data.js

this.data = this.getData()

然后在运行时出现上述浏览器错误。关于我做错了什么有什么想法吗?

【问题讨论】:

  • google -> "es6 import syntax" -> 1. 结果:MDN: import
  • 反正是getData,不是this。模块范围内没有this

标签: javascript


【解决方案1】:

应该是这样的

import { getData } from data.js

如果没有括号,您将导入不存在的 default 导出。

【讨论】:

    【解决方案2】:

    在使用不属于当前对象的“getData()”时,应省略“this”关键字。

    function getData() { .... }
    
    export default getData;
    
    import getData from "data.js"
    
    this.data = getData();
    

    【讨论】:

      【解决方案3】:

      将您的导入更改为命名导入,如下所示:

      import { getData } from data.js
      

      或者像这样导出getData函数作为默认导出:

      export default { getData }
      

      【讨论】:

      • 这几乎对我有用,但它不完整。您必须在导入函数的名称周围使用大括号(从 data.js 导入 { getData }),并且如果您不打算将其设为导出默认值,则必须将函数指定为定义的导出.因此,如果您不打算导出默认 { getData },则必须将其定义为导出函数 getData() {...},例如。
      猜你喜欢
      • 2023-02-02
      • 2012-03-14
      • 2011-08-19
      • 2013-07-15
      • 2020-06-01
      • 2020-12-14
      • 2011-03-01
      • 1970-01-01
      • 2019-08-22
      相关资源
      最近更新 更多