【问题标题】:TypeError: default is not a function. Import, export JavaScript classTypeError:默认不是函数。导入、导出 JavaScript 类
【发布时间】:2018-11-08 01:18:42
【问题描述】:

我对这应该是简单的代码感到困惑:

driveApi.js:

class GoogleDriveApis {
  constructor(arg) { 
    this.path = arg
  }

  test() {
    console.log(this.path)
  }
}
export default new GoogleDriveApis();

当我这样做时:

import GoogleDriveApis from './driveApis'

GoogleDriveApis('abc').test()

我遇到了这个错误:TypeError: (0 , _driveApis2.default) is not a function

我做错了什么?

【问题讨论】:

  • 您导入的GoogleDriveApis 是一个实例化对象,而不是一个类,您的意思是要导出:export default GoogleDriveApis;(然后在消费者中使用new)吗?
  • @CertainPerformance +1:我改成你说的然后打电话给new GoogleDriveApis('abc').test()

标签: javascript ecmascript-6


【解决方案1】:

删除这个:export default new GoogleDriveApis();

并将您的班级更改为:export default class GoogleDriveApis {

【讨论】:

  • 你知道我们在哪些情况下使用export default new GoogleDriveApis(),然后在没有new的情况下调用GoogleDriveApis('abc').test()?我很困惑,因为我看到有人使用它。
  • 您链接的内容似乎完全无关。
  • @lucahuy:这取决于您希望代码如何工作。您是否希望每个使用 ./driveApis 的呼叫站点都拥有自己的、独立的 GoogleDriveApis 实例?如果是,则导出该类。但是,如果您想在所有模块之间共享相同的实例,请改为导出实例化对象。但是在那种情况下你可能不需要先定义一个类,你可以直接创建对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 2017-10-30
  • 2016-06-03
  • 1970-01-01
相关资源
最近更新 更多