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
相关产品推荐
相关产品推荐

