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”。我在谷歌上搜索了几个小时,似乎无法解决这个问题。请指导我正确的方向。谢谢。
答案 0 :(得分:0)
指针 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
。