I read other questions like this here but none solved my issue. I have a terminal window on which I ran

geth --networkid=4 --rpc --rpcport 8545 --datadir=$HOME/.rinkeby --syncmode=light --ethstats='yournode:Respect my authoritah!@stats.rinkeby.io' --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@

based on the connect yourself section of the test chain Rinkeby.

I also have a node app which has

var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

and which I'm running after launching geth.

The terminal launches geth with no issues and outputs INFO [07-12|15:40:40] HTTP endpoint opened: I don't understand why my node app is having trouble connecting to it.

The error is ReferenceError: web3 is not defined.

  • Hi there. Do you have the web3 library installed on your system? (e.g. Using Node?) – Richard Horrocks Jul 12 '17 at 15:33
  • Do you need --rpcapi="web3" int the geth command? – Joe Jul 12 '17 at 15:35
  • I do. I have connected it successfully before with the same app but now wanted to connect it to the Rinkeby chain. – mcansado Jul 12 '17 at 15:35
  • Just tried now with that (full command: geth --networkid=4 --rpc --rpcapi="web3" --rpcport 8545 --datadir=$HOME/.rinkeby --syncmode=light --ethstats='yournode:Respect my authoritah!@stats.rinkeby.io' --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@ and threw the same error. – mcansado Jul 12 '17 at 15:38
  • I think you're missing the --rpcaddr "" flag? – webjunkie Jul 12 '17 at 17:01

I've launched geth as

geth --networkid=4 --datadir=$HOME/.rinkeby --syncmode=light --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@ --rpc --rpcapi=eth,web3,net,personal,ssh,db,debug console

And have this test file index.js

var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));


And it will output the current block on execution node index.js

| improve this answer | |
  • Ok this seems to work with one caveat: I'm getting the block number back as 0 and that doesn't change. Shouldn't it be downloading the rinkeby blockchain and giving me back increasing block numbers? – mcansado Jul 13 '17 at 13:12
  • 1
    Figured it out, the command should be geth --networkid=4 --datadir=$HOME/.rinkeby --syncmode=light --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@ --rpc --rpcapi=eth,web3,net,personal,ssh,db,debug console (difference is ".rinkeby" vs "rinkeby"). Block was zero because it wasn't detecting the rinkeby.json (genesis) file. Your answer is correct but for consistency I'd change that because it's how it's laid out in the rinkeby tutorials. Thanks! – mcansado Jul 13 '17 at 13:49
  • You are right I'd have execute init without the '.' so it worked for me. – Ismael Jul 13 '17 at 16:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.