未处理的拒绝错误:此合约对象尚未设置地址,请先设置地址

Posted

技术标签:

【中文标题】未处理的拒绝错误:此合约对象尚未设置地址,请先设置地址【英文标题】:Unhandled rejection Error: This contract object doesn't have address set yet, please set an address first 【发布时间】:2018-07-14 13:29:24 【问题描述】:

我目前正在尝试使用 Infura 通过 Web3 在我的机器上运行。当我设置运行我的 node index.js 文件时,我收到以下错误:

Unhandled rejection Error: This contract object doesn't have address set yet, please set an address first.
    at Object._processExecuteArguments (/Users/Oso.Lu/cryptokitty-miner/node_modules/web3-eth-contract/src/index.js:739:15)
    at Object._executeMethod (/Users/Oso.Lu/cryptokitty-miner/node_modules/web3-eth-contract/src/index.js:760:54


var helpers = require("./helpers.js")

var Web3 = require('web3');
var Tx = require('ethereumjs-tx');

// You should be running a local Eth node or use Infura.
var web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io:443"));
var prompt = require('prompt');


var sendingAddress = "********************"  // with your sending ETH address
var pKey = "******************************"; // This will store the corresponding private key.  we'll be getting the private key for this Eth address from a command prompt


// Keep track of kitties we'll mine to avoid double-mining
var kittyArray = []

var theNonce = "";
// Gas price.   Todo: Use Eth gas station Oracle to predict gas prices
var gwei = '26'

// Track # of received
var num_requested = 0
var num_received = 0

我认为问题可能出在 Infura 端口 443 上。

【问题讨论】:

这通常意味着您没有将 MyContract.options.address 设置为部署后从合约实例返回的地址。您需要发布完整的代码以进行确认。 【参考方案1】:

简单的解决方案

Voting.options.address = "0x6ee9957aef5f4073c6af71441ec7962527c37671"

Voting 是我的智能合约实例名称

0x6ee9957aef5f4073c6af71441ec7962527c37671”是部署的智能联系人地址

我的 web3.js 版本 "web3": "^1.0.0-beta.31",

【讨论】:

我们必须在哪里写 'Voting.options.address = "0x6ee9957aef5f4073c6af71441ec7962527c37671"' ? 我遇到了和你一样的错误。你知道在哪里添加@ngCourse 建议添加的代码吗?【参考方案2】:
const accounts = await web3.eth.getAccounts()
this.setState( 'account': accounts[0] );
const networkId = await web3.eth.net.getId()
const networkData = SocialNetwork.networks[networkId]
if (networkData) 
    const socialNetwork = web3.eth.Contract(SocialNetwork.abi, networkData.address)

 else 
    window.alert('oops')

这是为您的合约设置地址的正确方法。您可以通过networkData.address

设置地址

【讨论】:

以上是关于未处理的拒绝错误:此合约对象尚未设置地址,请先设置地址的主要内容,如果未能解决你的问题,请参考以下文章

未处理的拒绝错误:无效的 JSON RPC 响应:“”

Laravel 7致命错误:未捕获的RuntimeException:尚未设置外观根

phpmyadmin登录后显示“phpMyAdmin 高级功能尚未完全设置,部分功能未激活。查找原因...。”错误提示

将 laravel 5.8 升级到 6:致命错误:未捕获的 RuntimeException:尚未设置外观根

*可能的未处理承诺拒绝(id:0):类型错误:未定义不是对象(评估'result.cancelled')云图像上传

未处理的拒绝(TypeError):无法设置未定义的属性“innerHTML”