You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js调用类方法报XYZ.getData is not a function错误是什么原因?

问题原因

你定义的getData是XYZ类的实例方法,必须通过类的实例调用,不能直接用类名调用。

两种修复方案

方案1:将方法改为静态方法

在getData方法前加static关键字,修改后的类代码如下:

const _ = require("lodash");
const ObjectId = require("mongoose").Types.ObjectId;
const mockLookUps = require("../../data").mockLookUps;

class XYZ {
   // ...... 其他函数
   static async getData() {
    return Promise.resolve(mockLookUps); // JSON Object
  }
}

module.exports = XYZ;

修改后你原来的调用方式const x = await XYZ.getData();就可以正常运行。

方案2:先实例化类再调用方法

不需要修改XYZ类的代码,调整调用侧的写法即可:

// 先实例化XYZ类
const xyzInstance = new XYZ();
// 调用实例上的getData方法
const x = await xyzInstance.getData();
原理解释
  • 没有加static修饰的类方法属于原型方法,会被挂载到类的prototype属性上,只有通过new关键字生成的类实例才能访问
  • 加了static修饰的类方法属于静态方法,直接挂载到类本身,不需要实例化就可以通过类名直接调用

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:09:02