坚固性 - "Uncaught TypeError: Cannot read property 'contract' of undefined"



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

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

Mix 给我的确切错误是:

"未捕获的类型错误:无法读取未定义的属性'协定'。"

所以它显然认为合同["MyFirstContract"]为零

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

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

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

相关内容

最新更新