松露毛毛雨错误“ TypeError:无法读取未定义的属性”地址“

时间:2018-09-21 19:59:19

标签: javascript ethereum solidity truffle drizzle

预期:

运行该应用程序后,用户应在浏览器中看到"Loading Drizzle..."消息,然后很快又出现"Drizzle is ready"

结果:

应用程序停留在"Loading Drizzle..."上,Chrome控制台出现错误:

错误

  

根本没有发现

     

在Contractsaga上

     

at takeEvery

     

在addContract

     

在实例化合同

     

TypeError:无法读取未定义的属性“地址”

我在这里关注本教程:https://truffleframework.com/tutorials/getting-started-with-drizzle-and-react

我在当前部分:

替换渲染方法

render() {
  if (this.state.loading) return "Loading Drizzle...";
  return <div className="App">Drizzle is ready</div>;
}

我已经在我的应用程序中完成了此操作,并希望看到“毛毛雨已准备就绪”消息,但上面却出现了错误。

这是我的仓库:https://github.com/leongaban/truffle_drizzle_test

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:1)

没有合同部署到您的ganache网络,这就是发生此错误的原因。

确保在文件夹的根目录中,在truffle migrate之后运行truffle compile

答案 1 :(得分:0)

truffle migrate会将您的合同部署到您的区块链网络上,然后输出文件build/contracts/YourContract.json,其中包含有关合同的信息。例如,它包含您的合同的ABI和您的合同在其上部署的地址。

您的JavaScript可能会导入该JSON文件,以获取连接到合同所需的信息。因此,请确保JS正在导入JSON的最新版本,否则它将不知道在哪个地址找到您的合同,等等。

答案 2 :(得分:0)

即使将合同正确部署到ganache网络后,我也遇到了同样的问题。它对我不起作用的原因是我在Chrome浏览器中激活了MetaMask。我什至没有登录,但看起来dapp似乎在错误的网络上寻找合同。当我使用隐身模式/完全禁用MetaMask打开网站时,它可以正常工作!

这是本教程指出的,但是我想很容易就不认真对待:

  

注意:如果您已经拥有隐身窗口,请确保使用   已安装MetaMask(或现在禁用MetaMask)。否则,该应用   将尝试使用MetaMask中指定的网络,而不是   localhost:8545下开发网络。