我正在使用web3.js v1.0,其中包含Ganache v1.1.0的可靠性^ 0.4.17。我正在尝试调用发送事务,但它失败并显示以下错误消息。
返回错误:错误:错误:[ethjs-query]格式化输出时 来自RPC' undefined'方法' sendRawTransaction'错误: [ethjs-format]十六进制字符串' undefined'必须是字母数字66 utf8 字节十六进制(字符:a-fA-F)字符串,为0字节
MyContract.sol
function createStarCard(string name, uint price) public {
require(msg.sender == owner);
uint starCardId = starCards.push(StarCard(name, price));
starCardIdToOwner[starCardId] = owner;
}
App.js
createStarCard = ({ name, price }) => {
window.web3.eth.getAccounts().then((accounts) => {
this.state.ContractInstance.methods.createStarCard(name, price).send({
from: accounts[0],
gas: 300000,
}).then((receipt) => {
console.log(receipt)
}).catch((err) => {
console.log(err.message) <-- Caught error message
})
})
}
带有错误消息的Google搜索结果向我指出了以下问题,但它们对我的案例没有帮助:
更新:分享我的App.js构造函数
constructor(props) {
super(props)
if (typeof window.web3 !== 'undefined') {
this.web3Provider = window.web3.currentProvider;
} else {
console.log("Use Ganache web3")
this.web3Provider = new Web3.providers.HttpProvider('http://localhost:7545');
}
window.web3 = new Web3(this.web3Provider);
const contractAddress = "0x1bdaf0cd259887258bc13a92c0a6da92698644c0"
const ContractInstance = new window.web3.eth.Contract(Abi, contractAddress);
this.state = {
ContractInstance,
}
}
答案 0 :(得分:1)
看起来问题出在Ganache mac app上。我通过使用ganache-cli
来解决这个问题。
答案 1 :(得分:0)
我通过重新安装Metamask解决了这个问题。