gpt4 book ai didi

javascript - 找不到 Node.js/socket.io/socket.io.js express 4.0

转载 作者:数据小太阳 更新时间:2023-10-29 05:05:52 25 4
gpt4 key购买 nike

所以我试图让聊天在我的网站上运行,当我在本地测试时它运行良好,因为我本地主机上的端口 8080 可用以及所有这些好东西。但现在我将我的代码推送到我的 Heroku 应用程序,当我尝试加载我的聊天页面时,我收到错误消息,指出它无法获取 localhost:8080/socket.io/socket.io.js。

我看过 node.js /socket.io/socket.io.js not found并尝试了这些建议,但都没有用,即使将 socket.io.js 文件移动到资源文件中也没有用。我猜这是因为我使用的是 express 4.0?

任何帮助将不胜感激谢谢

编辑:所以要添加更多细节,因为我的问题看起来有点含糊,这里是我的相关 app.js 代码:

 var client = require('socket.io').listen(8080).sockets;

在聊天页面的 jade 文件中,我有:

 script (src = `'http://localhost:8080/socket.io/socket.io.js`')

以后

 var socket = io.connect(`'http://localhost:8080`');

所有这些都在本地主机上运行(我在端口 5000 上加载,socket.io 连接到端口 8080)。我使用带有 heroku 工具带的 'foreman start' 来执行此操作。

当我尝试更改这些以在 heroku 上工作时,它会中断并且我不确定如何修复它。我希望这可以澄清这个问题。

编辑 2:我在跑: express 4.0.0

套接字.io 0.9.16

Node 0.10.x

谢谢

最佳答案

express 中是否有一个显式路由捕获所有其他路由?也许是这样的:

app.get("/", handlers.home);
app.get("/..." ...);
...
app.get("*", handlers.error);

这可能会使 socket.io 无法为客户端托管它自己的 js 文件。有一种简单的方法可以解决此问题,因为您可能已经在 express 中设置了 publicstatic 文件夹。像这样的东西:

app.use(express.static("public"));

创建一个名为 socket.io 的新文件夹,并将适当的 socket.io.js 文件复制到该文件夹​​中,一切都应该很好。 但是请注意,有两个文件名为 socket.io.js!! 所以,如果您看到类似 “Uncaught ReferenceError: require is not defined” 这意味着您复制了“node-ey”服务器端文件。这是要复制的正确客户端文件:

app_dir/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.min.js

请注意@BHendricks:我本来想回复你的评论,但我目前缺乏所需的声誉。

编辑:OP 问题可能更多地与“本地主机”问题有关。当从客户端(比如你的家庭 IP)连接时,就你的浏览器而言 - localhost 意味着与本地托管东西的机器的连接。由于您的家用机器(或手机)没有托管 socket.io,因此失败。

您需要做的是让您的服务器嵌入套接字连接信息(完全限定的主机名、IP 等)。这可以在服务器“呈现”带有客户端连接的页面时完成。

关于javascript - 找不到 Node.js/socket.io/socket.io.js express 4.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23179827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com