javascript - 此 Web3.js 调用没有结果
问题描述
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();
getGreeting().call() 给了我这个错误。我尝试了许多不同的方法并被困在这里几个小时。不知道该怎么做。https://gyazo.com/81970d03c1380cd513998f25deef9e40
解决方案
您错误地组合await
了回调函数(在您的情况下function(result) {}
)。
由于您使用的是await
,它永远不会到达回调函数,并且返回Promise
由await
语句解析。
在您的代码上下文中,从返回值await
然后打印它更有意义。
// remove the callback function
const greeting = await Bottle.methods.getGreeting.call();
console.log(greeting);
推荐阅读
- unit-testing - 桌面驱动测试中的竞态检测
- php - 想要更新两个条件都具有多个值
- logging - 如何在 DASK 中启用日志记录
- python - 使用docker时导入自定义python模块文件失败
- c++ - 在 Unity Builds(Jumbo Builds) 应用到我们的项目后,lib 大小减小但 dll 大小相同。为什么什么都没有改变?
- react-native - 通知操作按钮操作而不显示应用程序
- java - 如何对用 Java 制作的画布进行媒体查询?
- android - 如果他将应用程序置于后台/在 android/kotlin 中的应用程序上处于非活动状态,如何注销用户?
- c - 将指针附加到 pthread
- spring - 使用 Java 8、Tomcat 7 响应 Spring MVC 4.3 的流数据