Javascript 此Web3.js调用没有结果

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

getGreeting().call()给了我这个错误。我尝试了许多不同的方法,在这里坚持了几个小时。不知道该怎么办

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