如何解决未处理的承诺拒绝警告
const Web3 = require('web3');
const fs = require('fs')
const web3 = new Web3("http://localhost:7545");
const contract_address = "0x7484d32e891817702c5d7c764dBF7e592000b415";
async function web3Contract() {
const contract_abi = fs.readFileSync('./build/contracts/Bottle.json','utf8')
const Bottle = await new web3.eth.Contract(JSON.parse(contract_abi).abi,contract_address);
Bottle.methods.setName("Palm").send();
Bottle.methods.getGreeting().call();
}
async function run() {
try {
await web3Contract();
} catch (err) {
console.log('Your error is this - ' + err);
}
}
run();
我收到错误“UnhandledPromiseRejectWarning”。我在谷歌上搜索了几个小时,似乎无法解决这个问题。请指导我正确的方向。谢谢。
解决方法
指针 1:不要将 JSON.parse(contract_abi).abi
评估为参数。如果您这样做,则无法检查它是什么 - 它可能会导致错误。更好:
const contract_abi = fs.readFileSync('./build/contracts/Bottle.json','utf8');
const abi = JSON.parse(contract_abi).abi;
console.log( abi); // do you get this far?
const Bottle = await new web3.eth.Contract(abi,contract_address);
指针 2:调试时不要记录错误对象的字符串值 - 您只会得到它的 toString()
结果,它看起来与记录 error.message
相同。更好:
console.log('Your error is this - ',err);
提供 err
作为第二个参数会导致 node
记录错误对象的其他属性,包括提供跟踪信息的 error.stack
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。