Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ethereum web3js调用因缺少合同地址而失败_Ethereum_Solidity_Smartcontracts_Web3js_Truffle - Fatal编程技术网

Ethereum web3js调用因缺少合同地址而失败

Ethereum web3js调用因缺少合同地址而失败,ethereum,solidity,smartcontracts,web3js,truffle,Ethereum,Solidity,Smartcontracts,Web3js,Truffle,要在本地设置上部署合同,我使用块菌。开发网络由Ganache运行。从应用程序A向网络发送数据也没有问题(使用块菌/块菌合同包)。我在编译和迁移合同时在同一工作目录中启动此应用程序 然而,当我将另一个应用程序连接到此网络并尝试检索数据时,我遇到了问题。这不使用任何块菌,只有web3js 我检索数据如下: let contractInstance = new web3.eth.Contract(abi, result.contractHashes) if (!contractInstance) ha

要在本地设置上部署合同,我使用块菌。开发网络由Ganache运行。从应用程序A向网络发送数据也没有问题(使用块菌/块菌合同包)。我在编译和迁移合同时在同一工作目录中启动此应用程序

然而,当我将另一个应用程序连接到此网络并尝试检索数据时,我遇到了问题。这不使用任何块菌,只有web3js

我检索数据如下:

let contractInstance = new web3.eth.Contract(abi, result.contractHashes)
if (!contractInstance) handleError('Could not find contract instance... Shutting down')

for (let i in result) {
  let internalId = result[i]._id

  contractInstance.methods.getStartDate(internalId).call(function(error, result) {
    if (error) handleFatalError(error, mongoClient) // This error is triggered

    console.log(result)
  })
}
这总是让我想起:

错误:此合约对象尚未设置地址,请先设置地址

据我所知,当您忘记上述步骤时,就会发生这种情况。然而,我不是在创建新合同,我只是引用网络中已经存在的合同。如果我通过合同地址引用合同,但它不知道合同地址,这对我来说没有意义? 基于本文,我尝试使用以下步骤缺失(trail和error),但错误消息相同

也使用

call().then(....)


不起作用。我相当无知,无法理解这个问题的道理。我希望你们当中有更多经验的人可以

检查是否导入了正确的ABI文件。当我指向一个过时的ABI文件时,我遇到了类似的问题。在我指出正确的一个之后,错误就消失了

首先检查提供地址是否正确,或者首先部署合约,然后尝试访问它。因为
contractance.options.address=null

您使用的是什么版本的web3.js,以及
结果的值是什么。ContractHashs
?这是一个奇怪的变量,表示合约的地址。您好,smarx,谢谢你抽出时间。我有1.0.0-beta.34版。另外,我同意命名,应该是contractAddress,必须在另一个项目中更改它。它的价值是什么?你把它记录下来了吗?(我猜是空的。)斯马特,谢谢!所以我记录了“结果”并看到了ContractHashs值。但是,我没有看到它实际上必须是结果[0]。ContractHashs。有点傻,但是谢谢你的建议,让我们看得更具体一些。这并不能回答这个问题。一旦你有足够的钱,你将能够;相反-
call({ from: result.contractHashes }, function(error, result) {....})