Javascript 未处理的PromiserEjectWarning

Javascript 未处理的PromiserEjectWarning,javascript,solidity,web3js,Javascript,Solidity,Web3js,我收到一个错误“UnhandledPromiseRejectWarning”。我在谷歌上搜索了几个小时,似乎无法修复这个问题。请给我指引正确的方向。谢谢。指针1:不要将JSON.parse(contract\u abi).abi作为参数进行计算。如果你这样做了,就没有办法检查它是什么——这可能是导致错误的原因。更好: const Web3 = require('web3'); const fs = require('fs') const web3 = new Web3("http://

我收到一个错误“UnhandledPromiseRejectWarning”。我在谷歌上搜索了几个小时,似乎无法修复这个问题。请给我指引正确的方向。谢谢。

指针1:不要将
JSON.parse(contract\u abi).abi
作为参数进行计算。如果你这样做了,就没有办法检查它是什么——这可能是导致错误的原因。更好:

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();
指针2:调试时不要记录错误对象的字符串值-您将只获得其
toString()
结果,该结果看起来与记录
error.message
相同。更好:

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);

提供
err
作为第二个参数会导致
node
记录错误对象的其他属性,包括提供跟踪信息的属性。

嘿,谢谢您抽出时间。我用你的指针记录了abi,它工作了,我记录了瓶子实例,它工作了。但是当我进入
battle.methods.setName(“Palm”).send()时
It抛出这些错误&@AngeloTree尝试阅读和阅读以改进问题-关于错误发生的方式和时间的其他信息应编辑到问题中,而不是注释中。也许是在描述
from
字符串
瓶子.js
正在寻找的
 console.log('Your error is this - ', err);