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

开发Node.js NPM模块时出现callback不是函数的报错如何解决

问题根因

你代码的报错完全是调用写法的语法错误导致的:
你当前的调用代码是:

ot.GetScript("75535"), function(response)  {
  console.log(response)
}

这里括号的位置写错了,逗号在GetScript的调用括号外面,相当于你只给GetScript传了script_id一个参数,第二个callback参数直接被漏掉了,等于你传给_sendGetRequest的callback是undefined,调用的时候自然会报callback not a function。

正确的调用写法应该是把回调函数放在调用括号里:

ot.GetScript("75535", function(response)  {
  console.log(response)
})

其他需要修复的代码问题

除了调用语法错误,你封装的请求逻辑还有几个隐藏问题需要修复:

  • 逻辑判断运算符错误:你判断请求成功的条件里用的是&位运算符,不是&&逻辑与运算符,会导致判断逻辑不符合预期
  • 没有处理错误场景:当前只有请求成功、状态码200的时候才调用callback,请求报错或者状态码异常的情况完全没有回调触发,上层调用方无法感知错误
  • 没有做callback合法性校验:建议调用callback前先判断是不是函数类型,避免参数传错时直接抛错

优化后的_sendGetRequest参考代码:

_sendGetRequest(endpoint, callback) {
  console.log("GET METHOD")
  const options = {
    url: `${baseUri}/${endpoint}`,
    headers: {
      'X-Api-Id': `${this.apiId}`,
      'X-Api-Secret': `${this.apiSecret}`,
      'X-Api-Key': `${this.apiKey}`,
      "Content-Type": "application/x-www-form-urlencoded",
    },
  };

  request.get(options, function(error, response, body) {
    // 先判断callback是否是函数,避免报错
    if (typeof callback !== 'function') return
    if (!error && response.statusCode === 200) {
      var result = JSON.stringify(JSON.parse(body));          
      return callback(result, false);
    } else {
      // 错误场景也要回调
      return callback(null, error || new Error(`请求异常,状态码:${response?.statusCode}`))
    }
  })
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 22:45:01