我正在运行VisualStudio代码、智能工作室和第三站点
当我检查localhost:3000上的元素时,我能够在Sanity上看到我导入的令牌的数组,但不能在第三个see上看到。
下面是我的代码片段:
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数组显示?
发布于 2022-05-24 15:35:04
thirdwebSDK已经发生了很大的变化。此时,getTokenModule不再是一个有效的函数,而是在代码中使用sdk.getTokenModule(token.contractAddress)的部分尝试sdk.getTokenModule(token.contractAddress)。
发布于 2022-05-24 16:16:09
在第三you的最新版本中,您是如何初始化SDK的:
const sdk = ThirdwebSDK.fromPrivateKey(PRIVATE_KEY, "rinkeby")这么说吧,你不是指PRIVATE_KEY,而是指NEXT_PUBLIC_METAMASK_KEY,这是你永远不应该做的,这样你的私钥就会暴露给客户,任何访问你页面的人都能完全访问你的钱包,并能窃取你所有的资金。
您应该做的是用只读RPC实例化SDK,在这种情况下根本不需要传递私钥。您可以像这样实例化SDK:
const sdk = new ThirdwebSDK("rinkeby")而且,getTokenModule不是一个函数,您需要导入getToken并传递契约地址。
我希望这能帮上忙。
https://stackoverflow.com/questions/72309813
复制相似问题