我正在尝试从我的web3应用程序连接到我的testrpc实例,但我似乎无法连接。下面的代码应该返回testrpc链中所有帐户的数组。
代码:
Web3 = require('web3')
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
console.log(web3.eth.accounts);它返回下面和对象内部的intelliJ,当前提供者对象如下所示。

它似乎只是打印出我认为的物体:
Accounts {
eth:
Eth {
currentProvider: [Getter/Setter],
_requestManager: RequestManager { provider: [Object], providers: [Object], subscriptions: {} },
givenProvider: null,
providers:
{ WebsocketProvider: [Function: WebsocketProvider],
HttpProvider: [Function: HttpProvider],
IpcProvider: [Function: IpcProvider] },
_provider: HttpProvider { host: 'http://localhost:8545', timeout: 0, connected: false },
setProvider: [Function],
BatchRequest: [Function: bound Batch],
extend:
{ [Function: ex]
formatters: [Object],
utils: [Object],
Method: [Function: Method] },
clearSubscriptions: [Function],
getProtocolVersion: { [Function: send] request: [Function: bound ], call: 'eth_protocolVersion' },
getCoinbase: { [Function: send] request: [Function: bound ], call: 'eth_coinbase' },
isMining: { [Function: send] request: [Function: bound ], call: 'eth_mining' },
getHashrate: { [Function: send] request: [Function: bound ], call: 'eth_hashrate' },
isSyncing: { [Function: send] request: [Function: bound ], call: 'eth_syncing' },
getGasPrice: { [Function: send] request: [Function: bound ], call: 'eth_gasPrice' },
getAccounts: { [Function: send] request: [Function: bound ], call: 'eth_accounts' },
getBlockNumber: { [Function: send] request: [Function: bound ], call: 'eth_blockNumber' },
getBalance: { [Function: send] request: [Function: bound ], call: 'eth_getBalance' },
getStorageAt: { [Function: send] request: [Function: bound ], call: 'eth_getStorageAt' },
getCode: { [Function: send] request: [Function: bound ], call: 'eth_getCode' },
getBlock: { [Function: send] request: [Function: bound ], call: [Function: blockCall] },
getUncle: { [Function: send] request: [Function: bound ], call: [Function: uncleCall] },
getCompilers: { [Function: send] request: [Function: bound ], call: 'eth_getCompilers' },
getBlockTransactionCount:
{ [Function: send]
request: [Function: bound ],
call: [Function: getBlockTransactionCountCall] },
getBlockUncleCount:
{ [Function: send]
request: [Function: bound ],
call: [Function: uncleCountCall] },
getTransaction:
{ [Function: send]
request: [Function: bound ],
call: 'eth_getTransactionByHash' },
getTransactionFromBlock:
{ [Function: send]
request: [Function: bound ],
call: [Function: transactionFromBlockCall] },
getTransactionReceipt:
{ [Function: send]
request: [Function: bound ],
call: 'eth_getTransactionReceipt' },
getTransactionCount: { [Function: send] request: [Function: bound ], call: 'eth_getTransactionCount' },
call: { [Function: send] request: [Function: bound ], call: 'eth_call' },
estimateGas: { [Function: send] request: [Function: bound ], call: 'eth_estimateGas' },
sendSignedTransaction: { [Function: send] request: [Function: bound ], call: 'eth_sendRawTransaction' },
signTransaction: { [Function: send] request: [Function: bound ], call: 'eth_signTransaction' },
sendTransaction: { [Function: send] request: [Function: bound ], call: 'eth_sendTransaction' },
sign: { [Function: send] request: [Function: bound ], call: 'eth_sign' },
compile: { solidity: [Object], lll: [Object], serpent: [Object] },
submitWork: { [Function: send] request: [Function: bound ], call: 'eth_submitWork' },
getWork: { [Function: send] request: [Function: bound ], call: 'eth_getWork' },
getPastLogs: { [Function: send] request: [Function: bound ], call: 'eth_getLogs' },
subscribe: { [Function] call: undefined },
net:
Net {
currentProvider: [Getter/Setter],
_requestManager: [Object],
givenProvider: null,
providers: [Object],
_provider: [Object],
setProvider: [Function],
BatchRequest: [Function: bound Batch],
extend: [Object],
getId: [Object],
isListening: [Object],
getPeerCount: [Object],
getNetworkType: [Function: bound getNetworkType] },
accounts: [Circular],
personal:
Personal {
currentProvider: [Getter/Setter],
_requestManager: [Object],
givenProvider: null,
providers: [Object],
_provider: [Object],
setProvider: [Function],
BatchRequest: [Function: bound Batch],
extend: [Object],
getAccounts: [Object],
newAccount: [Object],
unlockAccount: [Object],
sendTransaction: [Object],
lockAccount: [Object],
importRawKey: [Object],
sign: [Object],
ecRecover: [Object],
net: [Object] },
Contract: [Function: Contract],
Iban:
{ [Function: Iban]
toAddress: [Function],
toIban: [Function],
fromAddress: [Function],
fromBban: [Function],
createIndirect: [Function],
isValid: [Function] },
abi: ABICoder { _types: [Array] } },
wallet:
Wallet {
length: 0,
_accounts: [Circular],
defaultKeyName: 'web3js_wallet' } }testRPC服务器也成功启动:

发布于 2017-07-27 20:39:31
如果您使用的是新的web3.js1.0.0-beta版本,那么试试这个(所有的语法都改变了,叹息)。用testrpc -d测试。
> var Web3 = require('web3');
> var web3 = new Web3('http://localhost:8545');
> web3.version;
'1.0.0-beta.11'
> web3.eth.getAccounts().then(console.log);
Promise { ... }
> [ '0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1',
'0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0',
'0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b',
'0xE11BA2b4D45Eaed5996Cd0823791E0C93114882d',
'0xd03ea8624C8C5987235048901fB614fDcA89b117',
'0x95cED938F7991cd0dFcb48F0a06a40FA1aF46EBC',
'0x3E5e9111Ae8eB78Fe1CC3bb8915d5D461F3Ef9A9',
'0x28a8746e75304c0780E011BEd21C72cD78cd535E',
'0xACa94ef8bD5ffEE41947b4585a84BdA5a3d3DA6E',
'0x1dF62f291b2E969fB0849d99D9Ce41e2F137006e' ]当然,现在一切都是异步的,因此,.then方法就会出现类似的问题。我花了最后一天的时间来解决这个问题--一开始很奇怪,但现在已经开始熟悉了。
如果您想要在一个变量中的帐户,您可以这样做,但注意不要使用该变量,直到承诺被解决。
> var foo;
> web3.eth.getAccounts().then(accts => {foo = accts});
> foo
[ '0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1',
'0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0',
'0x22d491Bde2303f2f43325b2108D26f1eAbA1e32b',
'0xE11BA2b4D45Eaed5996Cd0823791E0C93114882d',
'0xd03ea8624C8C5987235048901fB614fDcA89b117',
'0x95cED938F7991cd0dFcb48F0a06a40FA1aF46EBC',
'0x3E5e9111Ae8eB78Fe1CC3bb8915d5D461F3Ef9A9',
'0x28a8746e75304c0780E011BEd21C72cD78cd535E',
'0xACa94ef8bD5ffEE41947b4585a84BdA5a3d3DA6E',
'0x1dF62f291b2E969fB0849d99D9Ce41e2F137006e' ]发布于 2017-07-27 20:33:37
我测试了你的代码,它看起来很有效。我还用了testrpc
yourscript.js
var Web3 = require('web3')
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
console.log(web3.eth.accounts);
if(web3.isConnected())
console.log("ok");使用输出ok正确地记录帐户。您试过运行命令node yourscript.js吗?
发布于 2017-08-01 06:45:00
最近发布的web3似乎有一个bug。npm安装抓取1.0.0-beta,这不是稳定的版本(0.20.0)。
重装
npm uninstall web3
npm install web3@0.20.1 --save
然后再试一次。应该管用的。
https://ethereum.stackexchange.com/questions/22796
复制相似问题