Я хочу создать туннель между двумя компьютерами.
Компьютер 1: интерфейс (React)
Компьютер 2: API с локальной базой данных MongoDB и внутренним сервером NodeJS
Я попытался использовать ngrok для создания туннеля между двумя компьютерами, чтобы мой партнер мог проверить / построить соединение с API. Это не работает ... Установка ngrok была произведена в соответствии с руководством по началу работы без проблем.
Что мы сделали:
Создайте копию NodeJS на компьютере 1.
На компьютере 2 создайте туннель для доступа к порту MongoDB (27017) с помощью:
ngrok http localhost:27017
- Измените строку подключения MongoDB на Компьютере 1, чтобы указать ссылку ngrok, чтобы она выглядела так: 'mongodb: // username: [email protected]/dbname? AuthSource = admin', (вместо 'mongodb: // username: pwd @ localhost: 27017 / dbname? authSource = admin ',
Проблема в том, что когда мы пытаемся запустить приложение (запуск npm) на Компьютере 1, оно не работает.
Error : The app tries to connect to the db but fails.
{ MongoTimeoutError: Server selection timed out after 30000 ms
at Timeout.setTimeout [as _onTimeout] (C:\Users\marin\Documents\Code\Codecademy\Site\Travel-kit\node_modules\mongodb\lib\core\sdam\topology.js:897:9)
at ontimeout (timers.js:436:11)
at tryOnTimeout (timers.js:300:5)
at listOnTimeout (timers.js:263:5)
at Timer.processTimers (timers.js:223:10)
name: 'MongoTimeoutError',
reason:
{ Error: getaddrinfo ENOTFOUND http http:27017
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:26)
name: 'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]: {} },
[Symbol(mongoErrorContextSymbol)]: {} }
-> Служба Mongo запущена на компьютере 2. Я могу запустить базу данных и приложение локально. Все нормально работает. -> Создание туннеля нормально работает. Если я попытаюсь создать туннель с портом 3000 и запустить nodejs на Компьютере 2, я могу отправить запрос с Компьютера 1 и получить результат в обычном режиме.
Проблема, похоже, в том, как я пытаюсь напрямую подключиться к БД.
**** РЕШЕНО
Проблема заключалась в том, что MongoDB использует tcp, а не http, поэтому единственное, что я изменяю, - это создание туннеля, используя:
ngrok tcp 27017
ngrok http 27017
, вам нужно открыть номер порта 27017, чтобы использовать его на другом компьютере. избегать добавления localhost - person Fahad Mahmood   schedule 13.01.2020