Web3js
混音 IDE 中的錯誤
在將它連接到“web3.js@0.20.2”時,我在“remix IDE”中遇到了這種類型的錯誤
錯誤:無法解碼輸出:錯誤:uint256 類型的數據不足(arg="", coderType=“uint256”, value=“0x00”)
<!DOCTYPE html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script src="./node_modules/web3/dist/web3.min.js"> </script> </head> <body> <input id="name" name="choice" type="text"> Vote: </input> <button id="button">Submit : </button> <h2 id="instructor"></h2> </body> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script> <script> if (typeof web3 !== 'undefined') { web3 = new Web3(web3.currentProvider); } else { // set the provider you want from Web3.providers web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); } // Previous if/else statement removed for brevity web3.eth.defaultAccount = web3.eth.accounts[0]; console.log(web3.version) var vote= web3.eth.contract([ { "constant": false, "inputs": [ { "name": "x", "type": "uint256" } ], "name": "set", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "get", "outputs": [ { "name": "", "type": "uint256" }, { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" } ]); vote_add=vote.at('0x6b3c179a96c329dcf93f2d27310c77e88e651af6'); console.log(vote_add); $("#button").click(function() { vote_add.set($("#name").val()); }); vote_add.get(function(error, result){ if(!error) { $("#instructor").html(result[0]+' ('+result[1]+' years old)'+result[2]+result[3]+result[4]+result[5]); console.log(result); } else console.log(error); }); </script> </html>
堅固性程式碼:-
pragma solidity ^0.5.0; contract vote { uint public c0=0; uint public c1=0; uint public c2=0; uint public c3=0; uint public c4=0; uint public c5=0; function set(uint x) public { if(x==0) { c0+=1; } else if(x==1) { c1+=1; } else if(x==2) { c2+=1; } else if(x==3) { c3+=1; } else if(x==4) { c4+=1; } else if(x==5) { c5+=1; } else { } } function get() public view returns(uint,uint,uint,uint,uint,uint) { return (c0,c1,c2,c3,c4,c5); } }
如果您在連接網路時遇到任何問題(比如說
ganache
),您可以嘗試以下步驟:
- 確保
ganache
已啟動並執行(最好在埠 8545 上)- 從
remix
將環境更改為Web3 Provider
並從彈出視窗中確認地址。- 如果您想通過元遮罩連接,請將
remix
環境更改為Injected web3
. 確保您已連接到正確的網路metamask
。您可以通過點擊右上角的網路選項來更改網路並選擇localhost 8545
連接到本地執行ganache
。希望它會有所幫助。
我也遇到了同樣的錯誤。
geth
我認為原因是:solidity 程式碼版本與 web3 提供者的( )版本不兼容。解決方法是:將solidity程式碼和
geth
客戶端更新到最新版本,或者讓solidity版本與客戶端版本兼容geth
。