Solidity - "Uncaught TypeError: Cannot read property 'contract' of undefined"

Solidity - "Uncaught TypeError: Cannot read property 'contract' of undefined"

我对 Mix IDE 和以太坊(特别是 solidity)有些陌生,我有一个天真的问题。我网页中的javascript代码如何得到"tied"到合约代码?我写了一个接受值的简单网页,但 javascript 似乎无法将值传递给实际合同。确切的错误行是:

var result = contracts["MyFirstContract"].contract.reportUser("foo");

Mix 给我的确切错误是:

"Uncaught TypeError: Cannot read property 'contract' of undefined."

所以它显然将 contracts["MyFirstContract"] 视为 nil

但是,MyFirstContract.sol 文件存在! javascript 怎么知道我在说什么合约文件?它似乎没有出现在文档中,尽管我可能遗漏了一些东西。

我知道出了什么问题。 javascript 代码似乎没有直接访问 .col 文件。它直接从区块链获取合约代码,而不是实际的 .col 文件。所以你必须编译合约并将其上传到区块链,然后你的 javascript 才能看到它。

您必须将交易添加到测试区块链。在 Mix IDE 中,您必须按 "Right view" 窗格中可用的 "Add Transaction" 按钮(F7 拉出 "Right View" 窗格)。对话框打开后,按 "Create Contract" 单选按钮并从下拉菜单中选择您刚刚创建的合同。按 OK,Mix 会创建一个包含你的合约代码的交易。然后试试你的 javascript,它应该可以工作。