我已经阅读了关于该主题的所有其他帖子,但找不到解决我的问题的答案。我在默认端口或 5000 (process.env.PORT || 5000)
上运行 Express 服务器。然后我添加了 socket.io 但客户端找不到 socket.io.js 文件。经过一些测试后,我假设存在某种端口冲突或其他问题。这是我的服务器端代码:
var express = require('express'),
app = express(),
bodyParser = require('body-parser'),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
app.set('port', (process.env.PORT || 5000));
编辑 2:此外,我认为这并不重要,但我正在 Heroku local 上对此进行测试。
编辑 3:目录结构:
--api
--images
--node_modules
--scripts
--pages
main_page.ejs
--styles
composer
index.js
npm-debug
package
编辑 4:凹凸
最佳答案
问题
Socket.IO 无法拦截加载 socket.io.js 的对 /socket.io/
的请求。这意味着虚拟 socket.io.js 文件永远不会加载,您会收到上述 404 错误。
解决方案
改变这个:
app.set('port', (process.env.PORT || 5000));
app.listen(app.get('port', function() { ... });
对此:
app.set('port', (process.env.PORT || 5000));
server.listen(app.get('port'), function() { ... });
这可以防止 Express 立即拦截对 /socket.io/
的请求并允许加载文件。
关于javascript - 客户端找不到 socket.io.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42324105/