我想在两台计算机之间创建一条隧道。
计算机1:前端(反应)
计算机2:具有MongoDB本地数据库和NodeJS后端服务器的API
我试图使用ngrok在两台计算机之间创建隧道,以便我的伙伴可以测试/建立与API的连接。它不起作用... ngrok的安装已完全按照《入门指南》完成。
我们所做的:
在计算机1上创建NodeJS的副本。
在计算机2上,创建一个隧道以暴露MongoDB端口(27017):
ngrok http localhost:27017
问题是:当我们尝试在计算机1上启动应用程序(npm start)时,它无法正常工作。
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端口创建隧道并在计算机2上运行nodejs,则可以从计算机1发送请求并正常获取结果。
问题似乎出在我尝试直接连接到数据库的方式上。
****已解决
问题是MongoDB使用tcp而不是http,所以我唯一要做的更改是使用以下命令创建隧道:
ngrok tcp 27017
答案 0 :(得分:1)
我设法自己解决了这个问题。
问题是MongoDB使用tcp而不是http,所以我唯一要做的更改是使用以下命令创建隧道:
ngrok tcp 27017