CryptoCurrency NODE.js Web3 以太坊 - 无法连接到 TESTRPC

Posted

技术标签:

【中文标题】CryptoCurrency NODE.js Web3 以太坊 - 无法连接到 TESTRPC【英文标题】:CryptoCurrency NODE.js Web3 Ethereum - Can't connect to TESTRPC 【发布时间】:2017-12-28 11:11:21 【问题描述】:

我正在尝试从我的 web3 应用程序连接到我的 testrpc 实例,但我似乎无法连接。以下代码应返回 testrpc 链中所有帐户的数组。

代码:

Web3 = require('web3')
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
console.log(web3.eth.accounts);

它返回下面和对象intelliJ内部的currentprovider对象如下。

它似乎只是打印我认为的对象:

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 服务器也启动成功:

【问题讨论】:

您是否尝试过从节点控制台运行导入 web3 对象? 我也有同样的问题 :( 【参考方案1】:

您的连接正常。

要返回帐户数组,请使用web3.eth.getAccounts() 而不是web3.eth.accounts

上面的代码应该看起来像......

Web3 = require('web3')
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
web3.eth.getAccounts().then(accounts => console.log(accounts));

给你类似的东西......

[ '0x09e67e758381Fb878b9B1dCB91f2D5a62E00035a',
  '0x1BaABCa410a88564aC2BD9b8570D21b6e898C4C3',
  '0x8bfF74332C52065d2CC46f96c191aCDeec1AFEF2',
  '0x19070EaC7D68a710A5843Ee8cA3de258024da3Cb',
  '0x909394eA6feA0aDba05f093Ae43782e42b462F56',
  '0x63527Ef51b17830d6F597686C366A1995fd31bb2',
  '0xf476D31fAD8605d9D9D7b557C5117Bbe102935bc',
  '0xA64ba4e9d332106181A073E6eD20F876D6e28856',
  '0x126533F5FC78E355Fc35476Ae1392D338366D229',
  '0x291c17c0901FC9143D0DC43E1455E20D26342377' ]

【讨论】:

以上是关于CryptoCurrency NODE.js Web3 以太坊 - 无法连接到 TESTRPC的主要内容,如果未能解决你的问题,请参考以下文章

Node.js——前世今生

Installing Node.js & NPM on Ubuntu

Installing Node.js & NPM on Ubuntu

Weex 快速上手教程

Weex初体验

Firebase 初始化“Node.js 8 已被弃用。” [复制]