【问题标题】:Truffle Drizzle error "TypeError: Cannot read property 'address' of undefined"松露细雨错误“TypeError:无法读取未定义的属性'地址'”
【发布时间】:2018-09-21 19:59:19
【问题描述】:

预期:

运行应用程序后,用户应该会在浏览器中看到 "Loading Drizzle..." 消息,然后紧接着是 "Drizzle is ready"

结果:

应用卡在"Loading Drizzle...",并且chrome控制台出现错误:

错误

在根目录下未被捕获

在contractsSaga

每一次

在添加合同时

在实例化合约中

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>;
}

我已经在我的应用程序中完成了该操作,并希望看到“Drizzle is ready”消息,但却收到了上述错误。

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

【问题讨论】:

    标签: javascript ethereum solidity truffle drizzle


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2020-02-27
          • 2018-02-12
          • 2021-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          • 2023-01-03
          • 1970-01-01
          相关资源
          最近更新 更多