Web3.js 不使用 geth 节点返还帐户

Posted

技术标签:

【中文标题】Web3.js 不使用 geth 节点返还帐户【英文标题】:Web3.js not giving accounts back using geth node 【发布时间】:2019-01-26 08:26:20 【问题描述】:

我正在使用带有标志的 Geth 节点

geth --networkid '49' --datadir 'E:\Dir' --rpc --rpcapi 'web3, net, personal, admin, eth' --rpccorsdomain '*' 控制台

我正在尝试使用 Web3.js 获取帐户。每当我尝试使用...请求帐户时。

web3.eth.accounts[0]

web3.eth.getAccounts(accounts => console.log(accounts));

我得到一个错误,因此当打印整个 Web3 响应时,那里没有任何帐户,它显示以下错误..

[异常:错误:连接错误:无法连接到节点 http://localhost:8545。在 Object.InvalidConnection (http://127.0.0.1:8080/node_modules/web3/dist/web3.js:3137:16) 在 HttpProvider.send (http://127.0.0.1:8080/node_modules/web3/dist/web3.js:4350:18) 在 请求管理器.send (http://127.0.0.1:8080/node_modules/web3/dist/web3.js:6357:32) 在 Eth.get [作为帐户] (http://127.0.0.1:8080/node_modules/web3/dist/web3.js:6260:62) 在 Eth.remoteFunction (:2:14)]

当我在没有运行 HTPP-SERVER 的情况下尝试我的 index.html 页面时,错误是

无法加载http://localhost:8545/:对预检请求的响应 未通过访问控制检查: 响应中的“Access-Control-Allow-Credentials”标头是“” 当请求的凭据模式为“包含”时,必须为“真”。 因此,Origin 'null' 不允许访问。凭证模式 XMLHttpRequest 发起的请求由 withCredentials 属性。 HttpProvider.send@web3.js:4348

未捕获的错误:连接错误:无法连接到节点 http://localhost:8545。 在 Object.InvalidConnection (web3.js:3137) 在 HttpProvider.send (web3.js:4350) 在 RequestManager.send (web3.js:6357) 在 Eth.get [作为帐户] (web3.js:6260) 在 index.html:50

我不知道问题出在哪里..是否有与 geth 节点中的标志或 Js 中的某些方法相关的问题?谢谢

【问题讨论】:

也许是一个愚蠢的问题:geth 和您的 javascript 是否在同一台主机上运行?乍一看,它看起来像是一个基本的连接失败。另外,您的 geth 日志中是否有任何错误? 是的,它在同一台机器上运行,我使用的是最新的 beta 版本并且在该版本中存在问题,否则它在旧版本的 web3.js 上运行良好 另一种解决方案是添加这行代码 var options = timeout: 20000,headers: [name: 'Access-Control-Allow-Origin', value: '*'];使用 http 提供程序,例如 web3 = new Web3(new Web3.providers.HttpProvider("", options)); 【参考方案1】:

我遇到了同样的问题,我在运行以下命令后修复了它。

npm install web3@0.20.6 --save

检查这个link

【讨论】:

以上是关于Web3.js 不使用 geth 节点返还帐户的主要内容,如果未能解决你的问题,请参考以下文章

Geth 控制台使用及 Web3.js 使用实战

Geth控制台使用及Web3.js使用实战

Web3.js sendSignedTransaction 给出“错误:无法检查交易收据”

调用 web3.js,连接 infura 节点进行合约转账

使用 web3.js v0.2.6 创建帐户

如何使用 web3.js 注销 MetaMask 帐户