inpage.js:1 未捕获的错误:地址无效

Posted

技术标签:

【中文标题】inpage.js:1 未捕获的错误:地址无效【英文标题】:inpage.js:1 Uncaught Error: invalid address 【发布时间】:2020-03-28 12:45:53 【问题描述】:

这是我的合同

pragma solidity ^0.5.11;
contract test
mapping(string => address payable) pizzaPlace;
address contractOwner;
address payable userWallet;
constructor() public
    contractOwner=msg.sender;
    pizzaPlace["piaazOne"]=0xd806F6b4888ff997dB4A073fD9EdD40ab92BCbD4;

function paymentHandlerer() public payable returns(bool)
        userWallet = pizzaPlace["pizzaOne"];
        userWallet.transfer(msg.value);
        return true;

function showMessage() public view returns(string memory)
    return "Hello Solidity";

我学习 Solidity 已经有一段时间了,但我似乎没有解决这个问题。 上面的合约是用 remix 编写的,我在本地机器上使用 Ganache 来部署合约。

以下是我的函数调用代码:

const contractAddress = '0xEe1C4287b37de1ADFE2aD78C7B7c96D7694093cb';
const contractAbi=[...];
var contract = web3.eth.contract(contractAbi).at(contractAddress);
contract.showMessage(function (error, message) 
    $("#targetText").html(message);
);
const btn = document.querySelector("#sendEtherBtn");
btn.addEventListener("click", function () 
contract.paymentHandlerer(
"to":contractAddress,
 "from":web3.eth.accounts[0],
 "value":web3.toWei("10.0","ether")
);
);

当我运行这段代码时。当我在浏览器屏幕上看到消息“Hello Solidity”时,确实调用了函数 showMessage()。这证明合约运行良好。在第二个函数中,我想将一些以太币从 msg.sender 传输到接收者,但该函数一直出错。

错误是这样的:

Uncaught Error: invalid address
at c (inpage.js:1)
at inputTransactionFormatter (inpage.js:1)
at inpage.js:1
at Array.map (<anonymous>)
at o.formatInput (inpage.js:1)
at o.toPayload (inpage.js:1)
at w.e [as sendTransaction] (inpage.js:1)
at u.sendTransaction (inpage.js:1)
at u.execute (inpage.js:1)
at HTMLButtonElement.<anonymous> (index.html:101)

谁能帮我解决。 另外,我没有使用节点 js 或任何普通的 Js 和 JQuery

【问题讨论】:

【参考方案1】:

Web3.js v1.0 中,web3.eth.accounts 默认不填充。

相反,您需要使用以下方式获取帐户:

web3.eth.getAccounts().then(console.log);
> ["0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", "0xDCc6960376d6C6dEa93647383FfB245CfCed97Cf"]

【讨论】:

那么我应该用什么来触发函数调用而没有任何错误 @SurajShrestha 通过调用web3.eth.getAccounts() 获取地址,而不是使用web3.eth.accounts[0] 设置from 字段

以上是关于inpage.js:1 未捕获的错误:地址无效的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的错误:无效地址 web3.currentProvider MetaMask

未捕获的错误:在 mocha 单元测试时监听 EADDRINUSE:地址已在使用 :::3000

Vue 错误:未捕获(在承诺中)TypeError 无法读取 null 的属性(读取“地址”)

未捕获的错误:返回的值无效,是不是耗尽了 Gas?

未捕获的错误:元素类型无效

反应错误 - 未捕获的不变违规:元素类型无效