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

Solana测试网React+TypeScript开发NFT交易代码报digest未定义错误

问题解决方案

报错根因

TypeError: Cannot read properties of undefined (reading 'digest') 错误是Chrome浏览器的安全策略限制导致:
Web Crypto API的crypto.subtle接口仅在安全上下文中暴露,安全上下文的判定规则为:

  • 访问地址为localhost/127.0.0.1的HTTP服务
  • 所有HTTPS协议的服务
    你用局域网IP走HTTP协议访问时,不属于安全上下文,crypto.subtle为undefined,而Solana web3.js/spl-token库的地址计算、哈希校验逻辑会调用crypto.subtle.digest方法,进而触发报错。本地localhost访问符合安全上下文要求,所以运行正常。

修复步骤

  • 本地开发阶段优先用localhost域名访问服务,不要直接用局域网IP地址
  • 如果需要局域网内其他设备测试,给本地开发服务开启HTTPS:
    如果你用的是Create React App脚手架,启动时添加环境变量即可:
    # Mac/Linux
    HTTPS=true npm start
    # Windows
    set HTTPS=true&&npm start
    
    启动后用https://局域网IP:端口访问,浏览器提示证书风险时选择忽略继续访问即可,此时crypto.subtle可正常调用
  • 调用getOrCreateAssociatedAccountInfo前增加钱包状态校验,避免空指针:
    if (!wallet.publicKey) {
      console.log('请先连接钱包')
      return
    }
    toTokenAccount = await mint.getOrCreateAssociatedAccountInfo(wallet.publicKey)
    
  • 你当前代码硬编码了测试私钥,生产环境禁止将私钥放在前端代码中,避免资产被盗
  • 如果你要实现NFT交易,需要把mint的精度从9改为0,mint数量改为1,mint完成后立即销毁mint权限,当前代码生成的是同质化代币(FT),不符合NFT标准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:48:04