为何Node-Binance-Api在Windows下查询余额等操作输出异常
问题解决方案
首先你当前输出的是verbose: true开启后打印的请求调试信息,不是实际业务报错,相同代码在树莓派正常、Windows异常的核心原因和解决方法如下:
- 时间同步问题
币安API要求请求携带的时间戳和币安服务器时间差不能超过recvWindow参数设定的5000毫秒,树莓派默认开启网络时间同步,而Windows系统经常出现时间偏移的情况。
解决方法:打开Windows设置→时间和语言→日期和时间,点击「立即同步」,校准系统时间后重试。 - verbose调试信息干扰
你开启了verbose: true配置,会把所有请求的底层详细参数全部打印,覆盖了实际的错误返回内容。
解决方法:把配置中的verbose: true改为verbose: false,即可看到接口返回的真实错误提示。 - 系统代理影响
如果你的Windows设备开启了全局系统代理,Node请求会默认走代理,可能导致连接币安测试网异常,树莓派一般无默认代理配置。
解决方法:在binance初始化的options配置中新增proxy: null,强制禁止请求走代理。 - 依赖版本不一致
如果两台设备安装的node-binance-api版本不同,也可能出现兼容性问题。
解决方法:分别在两台设备的项目目录下执行npm list node-binance-api查看版本,保持版本一致即可,推荐统一安装最新稳定版:npm install node-binance-api@latest
修改后的参考代码
const Binance = require('node-binance-api'); const binance = new Binance().options({ APIKEY: '你的APIKEY', APISECRET: '你的APISECRET', verbose: false, // 关闭调试日志 proxy: null, // 强制不走代理 urls: { base: "https://testnet.binance.vision/api/", combineStream: 'wss://testnet.binance.vision/stream?streams=', stream: 'wss://testnet.binance.vision/ws/' }, }); binance.balance((error, balances) => { if ( error ) return console.log("接口错误:", error); console.info("余额查询结果:", balances); if(balances?.USDT?.available){ console.info("USDT可用余额: ", balances.USDT.available); } });
内容的提问来源于stack exchange,提问作者christoph handschuh
相关产品推荐
相关产品推荐

