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

React中用Metaplex获取Solana NFT遇410错误及空数组问题求助

问题解决方案

1. 解决公共RPC 410错误

Solana官方mainnet-beta公共RPC已禁用getProgramAccounts这类资源密集型调用,而Metaplex的findAllByOwner底层依赖该方法,这是触发410错误的核心原因。必须替换为付费RPC服务(如Alchemy、QuickNode),官方公共RPC仅适合测试环境使用。

2. 解决Alchemy RPC返回空数组问题

你遇到的空数组问题,核心是NFT持有方式与查询方法不匹配,结合代码调整方案如下:

方案一:修正Metaplex SDK查询逻辑

大部分Solana NFT是通过代币账户(SPL Token Account)持有,而非直接持有NFT Mint账户。你之前使用的findAllByOwner仅查询Mint账户的所有者,需替换为查询代币账户所有者的方法:

import { Metaplex, guestIdentity } from '@metaplex-foundation/js';
import { Connection, PublicKey } from '@solana/web3.js';

const getNftsForOwnerByAddressAndChainNameSolana = async (address) => {
  const rpc = "https://solana-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>";
  // 初始化连接,建议添加WebSocket端点提升稳定性
  const connection = new Connection(rpc, {
    commitment: "confirmed",
    wsEndpoint: "wss://solana-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>"
  });

  // 使用guest身份,无需生成随机Keypair(查询NFT无需签名权限)
  const metaplex = new Metaplex(connection).use(guestIdentity());

  const owner = new PublicKey(address);
  // 查询代币账户对应的NFT(适配绝大多数持有场景)
  const allNFTs = await metaplex.nfts().findAllByTokenOwner({ owner });

  console.log(allNFTs);
  return allNFTs;
}

方案二:直接调用Alchemy专属NFT API

Alchemy提供了更稳定的NFT查询接口,无需依赖Metaplex SDK,返回结果更全面:

const getNftsWithAlchemy = async (address) => {
  const apiKey = '<ALCHEMY_API_KEY>';
  const response = await fetch(`https://solana-mainnet.g.alchemy.com/v2/${apiKey}/getNFTsForOwner`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      jsonrpc: '2.0',
      id: 1,
      params: [
        address,
        { pageKey: null, pageSize: 1000 } // pageKey用于分页查询
      ]
    })
  });
  const data = await response.json();
  console.log(data.result.ownedNfts);
  return data.result.ownedNfts;
}

关键注意事项

  • 确保@metaplex-foundation/js和@solana/web3.js为最新版本,避免API兼容问题。
  • 付费RPC服务需确保API Key权限正常,Alchemy默认支持NFT相关查询接口。

内容的提问来源于stack exchange,提问作者AppInHand-Dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:57:07