web3 не определен

Я читал другие подобные вопросы здесь, но никто не решил мою проблему. У меня есть окно терминала, на котором я запустил

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

на основе раздела «подключи себя» цепочки тестов Rinkeby .

У меня также есть приложение узла, которое имеет

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

и который я запускаю после запуска geth.

Терминал запускает geth без проблем и выводов INFO [07-12|15:40:40] HTTP endpoint opened: http://127.0.0.1:8545. Я не понимаю, почему у моего приложения node возникают проблемы с подключением к нему.

Ошибка в том ReferenceError: web3 is not defined.

Всем привет. У вас web3установлена ​​библиотека в вашей системе? (например, с помощью узла?)
Вам нужна --rpcapi="web3"команда geth?
Я делаю. Раньше я успешно подключал его к тому же приложению, но теперь хотел подключить его к цепочке Rinkeby.
Только что попробовал с этим (полная команда:) geth --networkid=4 --rpc --rpcapi="web3" --rpcport 8545 --datadir=$HOME/.rinkeby --syncmode=light --ethstats='yournode:Respect my authoritah!@stats.rinkeby.io' --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@52.169.42.101:30303?discport=30304и выдал ту же ошибку.
Я думаю, вам не хватает флага --rpcaddr "127.0.0.1"?
попробуйте: Web3 (новый Web3.providers.HttpProvider (" 127.0.0.1:8545" ))
Я пробовал делать и то, и другое. Добавлен --rpcaddr "127.0.0.1"jsut перед --rpcportи добавлен Web3(new Web3.providers.HttpProvider("127.0.0.1:8545")). Все равно выдает ошибку.
попробуйте var Web3 = require('ethereum_web3.js');и проверьте, правильно ли вы все установили, я не знаю, ваш это случай или нет, но здесь я увидел это «Включить web3.min.js в ваш html-файл (не требуется для пакета метеора)», Проверь это.

Ответы (1)

Я запустил geth как

geth --networkid=4 --datadir=$HOME/.rinkeby --syncmode=light --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@52.169.42.101:30303?discport=30304 --rpc --rpcapi=eth,web3, сеть, личная, ssh, db, консоль отладки

И есть этот тестовый файл index.js

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

console.log(web3.eth.blockNumber);

И он выведет текущий блок при выполненииnode index.js

Хорошо, похоже, это работает с одной оговоркой: я получаю номер блока обратно, 0и это не меняется. Разве это не должно загружать блокчейн rinkeby и возвращать мне увеличивающиеся номера блоков?
Разобрался, команда должна быть geth --networkid=4 --datadir=$HOME/.rinkeby --syncmode=light --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@52.169.42.101:30303?discport=30304 --rpc --rpcapi=eth,web3,net,personal,ssh,db,debug console(разница " .rinkeby" vs " rinkeby"). Блок был равен нулю, потому что он не обнаруживал файл rinkeby.json (genesis). Ваш ответ правильный, но для последовательности я бы изменил его, потому что он изложен в учебниках rinkeby. Спасибо!
Вы правы, я бы выполнил init без '.' так что это сработало для меня.