找不到node.js /socket.io/socket.io.js

hau*_*nho 39 javascript node.js socket.io

我继续得到错误/socket.io/socket.io.js 404(未找到)未捕获的ReferenceError:io未定义

我的代码是

var express = require('express'), http = require('http');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);

server.listen(3000);
Run Code Online (Sandbox Code Playgroud)

<script src="/socket.io/socket.io.js"></script>
Run Code Online (Sandbox Code Playgroud)

问题是什么 ???

欢迎任何帮助!

Amo*_*rni 66

复制socket.io.js到公用文件夹(某些内容resources/js/socket.io.js)不是正确的方法.

如果Socket.io服务器正确地侦听您的HTTP服务器,它将自动提供客户端文件http://localhost:<port>/socket.io/socket.io.js,您无需查找或复制到可公开访问的文件夹中resources/js/socket.io.js并手动提供服务.

代码示例
Express 3.x - Express 3要求您实例化一个http.Server以附加http.Server到第一个

var express = require('express')
  , http = require('http');
//make sure you keep this order
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);

//... 

server.listen(8000);
Run Code Online (Sandbox Code Playgroud)

快乐编码:)

  • 我有类似的问题,这与我重构旧代码有关,这是使用`app.listen(3000);`.这不起作用.当我把它改成`server.listen(3000);`它开始工作正常. (26认同)
  • 这应该是此socket.io问题的验证答案.谢谢! (2认同)

ZiT*_*TAL 10

如何为客户端查找socket.io.js

安装socket.io

npm install socket.io
Run Code Online (Sandbox Code Playgroud)

找到socket.io客户端

find ./ | grep client | grep socket.io.js
Run Code Online (Sandbox Code Playgroud)

结果:

./node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js
Run Code Online (Sandbox Code Playgroud)

将socket.io.js复制到您的资源:

cp ./node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js /home/proyects/example/resources/js/
Run Code Online (Sandbox Code Playgroud)

在你的HTML中:

<script type="text/javascript" src="resources/js/socket.io.js"></script>
Run Code Online (Sandbox Code Playgroud)


Blu*_*y22 8

似乎这个问题可能从来没有得到过回答(尽管OP可能为时已晚,我会为将来遇到它并且需要解决问题的任何人回答它).

而不是npm install socket.io必须这样npm install socket.io --save做,socket.io模块安装在您的Web开发文件夹中(在您的index.html或index.php所在的基本位置运行此命令).这会将socket.io安装到运行命令的区域,而不是全局安装,此外,它会自动更正/更新package.json文件,以便node.js知道它在那里.

然后将源路径更改'/socket.io/socket.io.js''http://' + location.hostname + ':3000/socket.io/socket.io.js'.