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

Node.js中module.exports内使用this.function报未定义如何解决

问题原因

你的报错核心是箭头函数的this绑定规则导致的:

  • 箭头函数没有独立的this上下文,它的this继承自定义时的外层词法作用域,不会随调用方式改变
  • 如果你当前使用的是Node.js的ES Module(ESM)规范,模块顶层的this默认是undefined,你在箭头函数内部给this.myFunction赋值本质是给undefined追加属性,后续调用自然会抛出is not a function错误
  • 即使你用的是CommonJS规范,这种依赖隐式this绑定的写法也非常不稳定,不符合常规编码习惯
解决方案

方案1:直接定义内部函数(最推荐)

不需要把函数挂载到this上,直接在导出函数内部声明调用即可:

module.exports = (args) => {
  const myFunction = function(int){
    return int++;
  };

  let test = myFunction(5);
};

方案2:改为普通函数实现this绑定

如果你需要把方法挂载到实例对象上,将箭头函数替换为普通函数即可,普通函数的this会在调用时动态绑定:

module.exports = function(args) {
  this.myFunction = function(int){
    return int++;
  };

  let test = this.myFunction(5);
};

注意:如果该导出函数作为构造函数使用,需要用new关键字调用,否则普通调用模式下严格模式的this会指向undefined

方案3:自定义上下文对象

如果不想修改箭头函数的写法,可以自己声明一个上下文对象挂载方法:

module.exports = (args) => {
  const ctx = {}
  ctx.myFunction = function(int){
    return int++;
  };

  let test = ctx.myFunction(5);
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:42:06