Web3js
松露無效地址
使用 Truffle 3.0,當我呼叫我的合約函式之一時,在控制台中出現此錯誤:
未擷取(承諾中)錯誤:無效地址
我找到 了這個解決方法,在我的程式碼中我嘗試了這個但沒有成功。
this.web3Provided.eth.defaultAccount=this.web3Provided.eth.coinbase;
在他們坐著的松露文件中,我可以在我的配置中設置一個發件人地址,但這也行不通。
from: '0x8c384d9f226ea92c99f7aa83340714a6f82a3161'
導入所有 truffle.config 文件後,我也嘗試這樣做:
TruffleConfig.networks[NODE_ENV].from = this.web3Provided.eth.coinbase;
請幫我。
感謝我發現的 Truffle Gitter 頻道。我必須在我的 truffle-contract 的抽像上呼叫 defaults 函式。
MyContract.defaults({from: …})
https://github.com/trufflesuite/truffle/tree/develop/packages/truffle-contract
buildContracts() { let contracts = {}; let meta; this.props.contracts.forEach( _contract => { let {contract_name = ''} = _contract; meta = contract(_contract); meta.setProvider(this.web3Provided.currentProvider); meta.defaults({from: this.web3Provided.eth.coinbase}); contracts[contract_name] = meta; }); return contracts; }
這對我有用。希望我的回答對以後的讀者有所幫助。
您必須設置要使用的 defaultAccount:
web3.eth.defaultAccount = web3.eth.accounts[0];
在使用web3實例之前。
另外,在我使用react-truffle框的情況下,可以通過添加來解決無效地址。
this.state.web3.eth.defaultAccount = this.state.web3.eth.accounts[0];
在做任何與web3相關的事情之前。
**注意:**強烈不建議像這樣更改反應中的狀態。嘗試使用
this.setState()
來操作 web3 對象的子對象。我沒有考慮太多我正在開發的應用程序,所以如果這可行,我是 GOLDEN :D