Node.js/Axios无法连接本地Nano节点,报错ECONNREFUSED
解决Node.js调用本地Nano节点RPC出现ECONNREFUSED的问题
这种curl能正常跑但Node.js脚本连不上的情况确实挺让人头疼的,不过咱们可以从几个常见方向一步步排查,总能找到问题所在:
1. 确保axios请求和curl的逻辑完全匹配
curl用-d参数发送的是POST请求,且数据是JSON格式,你得保证axios的配置和这个逻辑完全对齐:
- 一定要用
axios.post而不是get - 明确设置
Content-Type: application/json请求头 - 记得给URL加上
http://前缀——有时候axios对纯localhost:7076的解析会出问题
修正后的示例代码:
const axios = require('axios'); async function fetchAccountBalance() { try { const response = await axios.post('http://localhost:7076', { action: 'account_balance', account: 'xrb_1aaprwcu9fac1tw3wesud5txb1zuiroti5xfr19bwozitjnnmbcbwpr1w95f' }, { headers: { 'Content-Type': 'application/json' }, // 禁用代理,避免系统代理干扰本地请求 proxy: false }); console.log('账户余额:', response.data); } catch (error) { // 打印完整错误细节,方便定位问题 console.error('请求失败:', error.message); console.error('请求配置:', error.config); } } fetchAccountBalance();
2. 排查本地节点的RPC绑定与拦截问题
- 核对Nano节点的RPC绑定地址:检查节点配置文件里的
rpc_bind_address项,确保它确实绑定在127.0.0.1:7076,没有误设成外网IP之类的其他地址 - 检查防火墙/安全软件:有些系统防火墙会拦截Node.js发起的本地请求,但curl可能被默认放行。可以临时关闭防火墙测试,或者给Node.js添加允许访问本地7076端口的规则
3. 检查配置文件与依赖版本
- 核对你的
config.js:确保里面的RPC地址、端口和curl用的localhost:7076完全一致,没有拼写错误 - 更新axios依赖:旧版本的axios可能存在兼容性问题,执行
npm update axios升级到最新稳定版
4. 验证请求的一致性
在catch块里打印error.config,和curl的请求参数做对比:
- 确认请求方法是POST
- 确认请求体的JSON结构和curl里的完全相同
- 确认目标地址没有被意外修改
内容的提问来源于stack exchange,提问作者GusRuss89
相关产品推荐
相关产品推荐

