预期:
运行该应用程序后,用户应在浏览器中看到"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>;
}
我已经在我的应用程序中完成了此操作,并希望看到“毛毛雨已准备就绪”消息,但上面却出现了错误。
答案 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下开发网络。