簡體   English   中英

使用 ethers 庫與智能合約交互時出現 ENS 錯誤

[英]Getting an ENS error when interacting with a Smart Contract using ethers library

大家好,我正在嘗試在部署在 Rinkeby tes.net 上的 ERC721 合約上調用名為“safeMint”的 function,但出現此錯誤:

Error: resolver or addr is not configured for ENS name (argument="name", value="", code=INVALID_ARGUMENT, version=contracts/5.5.0)

這是我用來調用 function 的代碼

const mintNFT = async () => {
        const {ethereum} = window;
        if(isMetaMaskInstalled) {
            try {
                const abi = require('../contracts/Animals.json').abi;
                console.log(abi);
                const accounts = await ethereum.request({ method: 'eth_accounts' });
    
                setAccount(accounts[0]);
                
                const web3Provider = new ethers.providers.Web3Provider(window.ethereum);
                const signer = web3Provider.getSigner();
                
                const contractWrite = new ethers.Contract('0x53Ea14980c8326E93a9F72889171c1e03d4aD6Ce', abi, signer);
            
                let trx = await contractWrite.safeMint(account, props.cidOfJsonInIpfs);
                console.log(trx);
            } catch(err) {
                console.log(err);
            }
            
        }
    }

我試圖打印傳遞的參數,但它們似乎是正確的,我做錯了什么?

我用下面的代碼解決了

   const mintNFT = async () => {
        const {ethereum} = window;
        if(isMetaMaskInstalled) {
            try {
                const abi = require('../contracts/Animals.json').abi;
                console.log(abi);
                const accounts = await ethereum.request({ method: 'eth_accounts' });
    
                
                const web3Provider = new ethers.providers.Web3Provider(window.ethereum);
                const signer = web3Provider.getSigner(accounts[0]);
                console.log(signer._address)
                
                const contractWrite = new ethers.Contract('0x53Ea14980c8326E93a9F72889171c1e03d4aD6Ce', abi, signer);
                let trx = await contractWrite.safeMint(accounts[0], `https://gateway.pinata.cloud/ipfs/${props.cidOfFile}`);
                let receipt = await trx.wait();
                console.log(receipt);
            } catch(err) {
                console.log(err);
            }
            
        }

我缺少的是:我使用 setState function 將“帳戶”state 變量設置為元掩碼的第一個帳戶,相反,我開始直接使用帳戶 [0] 並且它有效! 我會在 2 天內接受這個作為解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM