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

NodeJS学习遇回调错误:TypeError: callback is not a function 求助

解决TypeError: callback is not a function问题

嘿,这个报错我太熟了!咱们一步步来排查和解决:

错误核心原因

TypeError: callback is not a function 直接说明你调用getCoin函数的时候,要么完全没传callback参数,要么传的不是一个合法的函数类型值——比如传了字符串、数字这类非函数内容,导致代码执行到callback(undefined,price)时,找不到可执行的函数。

你的代码里还有两个隐藏坑

除了callback的问题,还有两个细节需要修正:

  • API URL格式错误:你写了https://https://rest.coinapi.io/${coin}&ssr=USD,多了一个重复的https://,而且CoinAPI的标准汇率接口格式应该是https://rest.coinapi.io/v1/exchangerate/${coin}/USD(需要对应你使用的API版本调整)
  • 缺少数据结构判断:如果接口返回的数据和预期不符,直接访问body.RAW[coin].USD.PRICE会触发新的报错,得先做合法性校验

修正后的完整代码示例

const request = require('request'); // 记得先安装依赖:npm install request

var getCoin = (coin, callback) => { 
  // 修正API URL,这里用CoinAPI的标准汇率接口示例
  const url = `https://rest.coinapi.io/v1/exchangerate/${coin}/USD`;
  // CoinAPI需要API密钥,务必在请求头里添加你的密钥
  request({
    url: url, 
    json: true, 
    headers: {'X-CoinAPI-Key': '你的API密钥'} 
  }, (error, response, body) => { 
    if(error){ 
      // 错误信息尽量具体,方便调试
      callback(`请求出错:${error.message}`); 
      return;
    } 
    if (response.statusCode !== 200) { 
      callback(`接口返回错误:状态码${response.statusCode},信息:${body.error || '未知错误'}`);
      return;
    }
    // 适配CoinAPI返回的结构,汇率字段是rate
    const price = body.rate;
    callback(undefined, price); 
  });
};

// 重点:调用getCoin时必须传入一个函数作为callback参数
getCoin('BTC', (err, price) => {
  if (err) {
    console.log('获取价格失败:', err);
    return;
  }
  console.log(`当前BTC的美元价格是:${price}`);
});

关键注意事项

  • 调用getCoin时必须传入第二个参数,且这个参数是一个函数,函数要接收err(错误信息)和price(返回结果)两个参数
  • CoinAPI需要注册获取API密钥,否则接口会返回权限错误,一定要在请求头里添加X-CoinAPI-Key
  • 处理异步回调时,记得先判断err是否存在,如果有错误就直接返回,避免后续代码执行出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:46:58