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

Solana/web3.js连接异常:fetch失败,无法获取区块时间

解决Solana测试网连接超时及getBlockTime调用错误

问题分析

你遇到的UND_ERR_CONNECT_TIMEOUT属于网络连接超时问题,大概率是官方测试网节点在当前网络环境下访问不畅;另外你的代码中getBlockTime()未传入必填的区块高度参数,即使连接成功也会触发新的错误。

修复步骤

1. 替换可访问的RPC节点

替换官方节点为网络环境可正常访问的Solana测试网RPC节点,同时增加超时配置避免因网络延迟触发超时:

const connection = new web3.Connection(
  'https://api.testnet.solana.com', // 替换为当前网络可访问的测试网RPC地址
  'confirmed',
  {
    timeout: 30000 // 设置30秒超时阈值
  }
);

2. 修正getBlockTime的调用

getBlockTime()必须传入区块高度作为参数,你可以先获取最新区块高度,再调用该方法:

// 获取最新区块高度
const blockHeight = await connection.getBlockHeight();
// 根据高度获取对应区块时间
const blockTime = await connection.getBlockTime(blockHeight);
console.log('区块时间:', blockTime);

3. 排查本地网络环境

  • 关闭可能拦截请求的防火墙或代理工具,重新测试连接
  • 若使用国内网络,可尝试切换至稳定的海外代理,或使用国内镜像节点

完整可运行示例代码

const web3 = require('@solana/web3.js');

async function fetchSolanaBlockTime() {
  try {
    const connection = new web3.Connection(
      'https://api.testnet.solana.com',
      'confirmed',
      { timeout: 30000 }
    );
    
    const blockHeight = await connection.getBlockHeight();
    const blockTime = await connection.getBlockTime(blockHeight);
    
    console.log('最新区块高度:', blockHeight);
    console.log('区块时间(本地时间):', new Date(blockTime * 1000));
  } catch (error) {
    console.error('执行错误:', error);
  }
}

fetchSolanaBlockTime();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:35:04