【问题标题】:Unable to connect nodejs api on localhost:5000 on server无法在服务器上的 localhost:5000 上连接 nodejs api
【发布时间】:2023-03-15 04:35:01
【问题描述】:

我已经使用 mongodb 在 digitalocean droplet 上成功部署了 React 应用。

我的服务器配置了 nodejs nginx pm2,一切正常 这是我的网站

www.xdomain.ml

但是我构建了我的 react 应用程序来连接后端 nodejs api。 我正在使用socket.io和axios进行连接。

在我的本地计算机上一切正常,但无法在服务器上连接。

我的socket配置是这样的

const socket = io("localhost:5000")

和axios一样

axios.post("http://localhost:5000/delete-domains")

在浏览器控制台上,显示

polling-xhr.js:198 GET https://localhost:5000/socket.io/?EIO=4&transport=polling&t=NjNh9TP net::ERR_SSL_PROTOCOL_ERROR

我错过了什么?

是否需要将代码上的 localhost:5000 替换为 127.0.0.1:5000 并重新构建?

但是mongodb连接建立成功

"mongodb://localhost:27017/api";

请帮忙 谢谢

【问题讨论】:

  • 看起来您已将网站托管为 http,并且套接字连接需要 https
  • 那么我该如何解决这个问题?谢谢
  • 托管到服务器后,localhost 也将无法工作。我希望您已将本地主机替换为服务器 ip,并在您的服务器上打开了这些端口
  • 但是 mongodb 连接是如何工作的?
  • 我尝试更改我的托管 ip 但结果相同

标签: node.js reactjs socket.io axios localhost


【解决方案1】:

const socket = io("localhost:5000")

在这一行你缺少“http://”或者如果你有 ssl “https://” 这一行应该是

const socket = io("http://localhost:5000");

【讨论】:

  • localhost 表示本地计算机没有托管服务器
【解决方案2】:

尝试改变

const socket = io("localhost:5000")

const socket = io("http://localhost:5000")

或其他高级设置:

const socket = io.connect('http://localhost', {
    port: 5000,
    reconnect: true
});

【讨论】:

  • 不工作。 localhost 无法在主机上识别。它使用我的本地计算机地址
  • 能否同时在 digitalocean 上同时部署两者?或者您需要静态 IP 地址。
  • 你可以把IP改成digitalocean上的IP,如果你在浏览器js端写localhost就会连接到你电脑的localhost。
猜你喜欢
  • 2021-02-17
  • 1970-01-01
  • 2021-12-18
  • 2010-09-12
  • 2012-11-30
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
相关资源
最近更新 更多