【问题标题】:Socket.io.js can't be found (404)找不到 Socket.io.js (404)
【发布时间】:2019-05-05 00:53:35
【问题描述】:

我使用 Socket.io 和 Express 开发了一个小型聊天应用程序,目前部署在我在数字海洋的水滴上。你可以在https://keleheart.com/chatapp 看到它。它目前不起作用,因为服务器正在为我的 html 文件底部的 chatapp/socket.io/socket.io.js 脚本返回 404,当您访问该站点时应该能够看到按 f12

我已经完成了一些在这里很流行的修复,例如 This onethis one,我什至尝试将脚本从本地更改为 CDN,如 here 所示,CDN 似乎为了更好地工作,(仍然给出 404 但它不再说 io 没有定义??)但它仍然没有产生我需要的输出。

您也可以在我的Github Page 上查看我的 repo,其中只有客户端的 index.html 文件和服务器的 chatApp.js。错误来自我的 html 文件,但所有修复程序都告诉我操作我的 package.json、服务器变量,但到目前为止没有任何效果。我的服务器仍然找不到 chatapp/socket.io/socket.io.js

【问题讨论】:

  • 我在您的存储库中没有看到您的服务器代码。由于您使用的是添加了额外前缀 (/chatapp) 的反向代理,我猜socket.io.js 文件的位置也应该得到该前缀:src='/chatapp/socket.io/socket.io.js'(尽管这可能需要设置 path io()) 的选项。或者,可能,使用相对路径 (src='socket.io/socket.io.js)。
  • @robertklep - 很奇怪,我看到你说的是真的,不知道发生了什么,但我再次承诺,它现在又在那里了。感谢您指出这一点。

标签: node.js express socket.io


【解决方案1】:

您是否尝试过在index.html 旁边创建/socket.io 文件夹,并将socket.io.js 的副本放入其中?这一直对我有用,但您可能必须通过 node_modules 文件夹来获取文件。这总是为我解决。

当然,请务必使用 express 的静态方法实际提供文件。

您的浏览器正在为您提供正确的错误消息。由于服务器上不存在/socket.io/socket.io.js,因此浏览器会显示服务器的404 消息。

【讨论】:

  • 由于我使用反向代理来为多个应用程序提供服务,因此该应用程序在 domain.com/chatapp 上解析,而我的脚本似乎没有沿着这条路径查看。我找到了 socket.io.js 文件,它位于索引文件旁边的文件夹中,但我现在不知道如何在服务器上提供第二个应用程序的静态文件。
猜你喜欢
  • 2016-10-06
  • 2013-11-06
  • 2012-08-09
  • 2019-01-26
  • 2013-06-03
  • 1970-01-01
  • 2012-01-31
  • 2017-02-02
  • 2012-04-28
相关资源
最近更新 更多