首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试设置第三个web令牌,将其提供给SDK,并从第三个web接收令牌模块数组。问题-令牌模块为空

尝试设置第三个web令牌,将其提供给SDK,并从第三个web接收令牌模块数组。问题-令牌模块为空
EN

Stack Overflow用户
提问于 2022-05-19 18:58:55
回答 2查看 192关注 0票数 0

我正在运行VisualStudio代码、智能工作室和第三站点

当我检查localhost:3000上的元素时,我能够在Sanity上看到我导入的令牌的数组,但不能在第三个see上看到。

下面是我的代码片段:

代码语言:javascript
复制
const sdk = new ThirdwebSDK(
   new ethers.Wallet(
    process.env.NEXT_PUBLIC_METAMASK_KEY,
    ethers.getDefaultProvider('https://rinkeby_xyz),
    ),
  )

const Portfolio = () => {
  const[sanityTokens, setSanityTokens] = useState([])
  const[thirdWebTokens, setThirdWebTokens] = useState([])
    
  useEffect (() => {
      const getSanityAndThirdWebTokens = async () => {
       const coins = await fetch("https://xyz"
          )
          const sanityTokens = (await coins.json()).result
          setSanityTokens(sanityTokens)
        
          setThirdWebTokens(
            sanityTokens.map(token => sdk.getTokenModule(token.contractAddress))
          )
      }
      return getSanityAndThirdWebTokens()
    }, [])
console.log('Sanity', sanityTokens) 
console.log('Thirdweb', thirdWebTokens)

错误消息:未处理的运行时错误TypeError: sdk.getTokenModule不是一个函数

如何使ThirdWeb数组显示?

EN

回答 2

Stack Overflow用户

发布于 2022-05-24 15:35:04

thirdwebSDK已经发生了很大的变化。此时,getTokenModule不再是一个有效的函数,而是在代码中使用sdk.getTokenModule(token.contractAddress)的部分尝试sdk.getTokenModule(token.contractAddress)

票数 0
EN

Stack Overflow用户

发布于 2022-05-24 16:16:09

在第三you的最新版本中,您是如何初始化SDK的:

代码语言:javascript
复制
const sdk = ThirdwebSDK.fromPrivateKey(PRIVATE_KEY, "rinkeby")

这么说吧,你不是指PRIVATE_KEY,而是指NEXT_PUBLIC_METAMASK_KEY,这是你永远不应该做的,这样你的私钥就会暴露给客户,任何访问你页面的人都能完全访问你的钱包,并能窃取你所有的资金。

您应该做的是用只读RPC实例化SDK,在这种情况下根本不需要传递私钥。您可以像这样实例化SDK:

代码语言:javascript
复制
const sdk = new ThirdwebSDK("rinkeby")

而且,getTokenModule不是一个函数,您需要导入getToken并传递契约地址。

我希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72309813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档