在 Remix 中部署合约并得到错误:回调已被调用

时间:2021-07-31 04:19:45

标签: javascript rpc web3 remix

我想通过 web3 与 javascript 进行合约交互

我参考了这个tutorial

并有如下javascript代码:

//ignored

        if (typeof web3 !== 'undefined') {
            web3 = new Web3(web3.currentProvider);
        } else {
            // set the provider you want from Web3.providers
            web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
        }

        web3.eth.defaultAccount = web3.eth.accounts[0];
        
        var Coursetro = new web3.eth.Contract(abi, 'addr of contract');

        var version = web3.version; 
        console.log(Coursetro);

        Coursetro.methods.getInstructor().call(function(error, result){
            if(!error)
                {
                    $("#instructor").html(result[0]+' ('+result[1]+' years old)');
                    console.log(result);
                }
            else
                console.error(error);
        });

        $("#button").click(function() {
            Coursetro.methods.setInstructor($("#name").val(), $("#age").val());
        });

当我启动 testrpc 并想使用 Remix 部署合约时

网络断开并在powershell中显示以下消息:

Error: Callback was already called.
    at C:\Users\USER\AppData\Roaming\npm\node_modules\ethereumjs-testrpc\build\cli.node.js:23011:36
    at WriteStream.<anonymous> (C:\Users\USER\AppData\Roaming\npm\node_modules\ethereumjs-testrpc\build\cli.node.js:23326:17)
    at WriteStream.emit (events.js:376:20)
    at WriteStream.destroy (C:\Users\USER\AppData\Roaming\npm\node_modules\ethereumjs-testrpc\build\cli.node.js:69792:8)
    at finish (internal/streams/writable.js:670:14)
    at processTicksAndRejections (internal/process/task_queues.js:82:21) 

和智能合约如下:

pragma solidity ^0.4.18;

contract Coursetro {
    
   string fName;
   uint age;
   
   function setInstructor(string _fName, uint _age) public {
       fName = _fName;
       age = _age;
   }
   
   function getInstructor() public constant returns (string, uint) {
       return (fName, age);
   }
    
}

发生了什么,我该如何解决?

0 个答案:

没有答案