Javascript 此Web3.js调用没有结果
getGreeting().call()给了我这个错误。我尝试了许多不同的方法,在这里坚持了几个小时。不知道该怎么办 您将Javascript 此Web3.js调用没有结果,javascript,solidity,web3js,Javascript,Solidity,Web3js,getGreeting().call()给了我这个错误。我尝试了许多不同的方法,在这里坚持了几个小时。不知道该怎么办 您将wait和回调函数(在您的例子中是函数(result){})错误地组合在一起 由于您使用的是await,因此它永远不会到达回调函数,返回的Promise由await语句解析 在您的代码上下文中,从await返回值,然后打印它更有意义 const fs = require('fs') const web3 = new Web3("ws://localhost:7545
wait
和回调函数(在您的例子中是函数(result){}
)错误地组合在一起
由于您使用的是await
,因此它永远不会到达回调函数,返回的Promise
由await
语句解析
在您的代码上下文中,从await
返回值,然后打印它更有意义
const fs = require('fs')
const web3 = new Web3("ws://localhost:7545");
const contract_address = "0x7484d32e8911817702c5d7c764dBF7e592000b415";
async function web3Contract() {
const contract_abi = fs.readFileSync('./build/contracts/Bottle.json', 'utf8')
const abi = JSON.parse(contract_abi).abi;
// console.log(abi);
const Bottle = await new web3.eth.Contract(abi, contract_address);
const accounts = await web3.eth.getAccounts();
await Bottle.methods.setName("Palm").send({from:accounts[0]});
const greeting = await Bottle.methods.getGreeting().call();
console.log(greeting);
});
}
async function run() {
try {
await web3Contract();
} catch (err) {
console.log('Your error is this - ' , err);
} finally {
console.log('finally');
}
}
run();
嘿,谢谢你抽出时间。我编辑了我的代码,现在它给了我这个新错误。新错误与原始版本无关(不打印输出)。调用可能会由于多种原因而恢复,包括:1)被调用地址上没有约定,2)ABI不正确(返回值无法解析),3)约定引发异常(通过失败
require()
语句,不允许的算术运算,由于任何原因导致对其他约定的内部调用失败1-3,…)。请提出一个单独的问题,其中显示了重现问题的步骤,包括合同源代码的相关部分,并验证您使用的地址是否正确,等等。我在ganache中验证过,它显示了正在进行的交易。地址也是正确的。ABI也是正确的,因为我可以console.log它,它会显示json。另外,如果我只是使用getGreeting.call()而不是getGreeting().call(),它将返回合同的一个大对象。
// remove the callback function
const greeting = await Bottle.methods.getGreeting.call();
console.log(greeting);