首页 > 解决方案 > 我在 react 的帮助下建立了一个简单的彩票合同,但在网页中出现错误

问题描述

我在网页中遇到错误:

返回值无效,它是否用尽了 Gas?如果您没有为要从中检索数据的合约使用正确的 ABI,您也可能会看到此错误,从块号请求数据。

在此处输入图像描述

#App.js

import React, {
    Component
}
from 'react';
import logo from './logo.svg';
import './App.css';
import web3 from './web3';
import lottery from './lottery';

class App extends Component {

    constructor(props) {
        super(props);

        this.state = {
            manager: ''
        };
    }

    async componentDidMount() {
        const manager = await lottery.methods.manager().call();

        this.setState({
            manager
        });
    }

    render() {
        return (
             <div>
              <h2> Lottery contract</h2>
              <p>this contract if managed by {this.state.manager}</p>
             </div> 
        );
    }
}

export default App;

彩票.js

import web3 from './web3';

const address = '0xB722A2E673c55F8cD0B781f0683FDa70c46e3183';

const abi = [
    {"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pickWinner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getPlayers","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enter","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"players","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}];

export default new web3.eth.Contract(abi, address);

#node 部署.js

  attmepting to deploy
 [{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pickWinner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getPlayers","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enter","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"players","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]
 deployed to  0xB722A2E673c55F8cD0B781f0683FDa70c46e3183

标签: reactjsethereumweb3

解决方案


我收到了同样的错误消息,这是因为我的元掩码不在 Rinkeby 网络上……一旦我切换,它就起作用了。


推荐阅读