节点服务器,Socket.io'io没有定义'?

我遵循了以前一直使用的完全相同的步骤,通过express创build应用程序,将模块依赖关系放在node_modules文件夹中。 看来,没有findsocket.io客户端JavaScript文件。

(我已经看过其他人修复,这是包括JavaScript文件在脚本选项卡。我没有必须做我的以前的节点+ socket.io项目)。

客户端上的JavaScript:

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

服务器上的JavaScript:

 var io = require('socket.io').listen(app); 

node_modules文件夹:

 socket.io, which has an internal node_modules folder containing socket.io-client 

错误信息:

 Uncaught ReferenceError: io is not defined (anonymous function) 

当我手动包含socket.io客户端时: http : //cdn.socket.io/stable/socket.io.js

我得到一个不同的错误是:

 Uncaught TypeError: Object #<Object> has no method 'connect' (anonymous function) 

在客户端,你做了:

 <script src="/socket.io/socket.io.js"></script> 

在设置socketvariables之前?

我设法弄错了这个,并且浪费了一个小时,结果发现这是一个非常基本的错误。

当一个函数没有定义? 如“Uncaught ReferenceError:io未定义”。 这是否意味着该function在“创build”之前就已经被“使用”了?

在我的HTML文件中,“调用”javaScript文件的部分,如下所示:

 <script src='./js/playerChatter.js'></script> <!-- this one calls io --> <script src="http://localhost:2019/socket.io/socket.io.js"></script><!--ThisCreatesio--> 

我改变了这一点

 <script src="http://localhost:2019/socket.io/socket.io.js"></script> <!--ThisCreates io--> <script src='./js/playerChatter.js'></script> <!-- this on calls io --> 

所以,现在的项目“io”,不pipe它是一个对象还是函数…实际上是在它被使用之前被创build的:D

玩的开心!

在客户端:

 <head> <script src="http://localhost/socket.io/socket.io.js"></script> </head> 

Node.js新手在这里! 我很确定这个答案。 然而,我仍然发现问题与套接字的src。 显然这个: <script src="/socket.io/socket.io.js">在我的客户端上不工作。

我用这个replace了上面的行,它似乎工作正常。

 <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script> 

这里是一个工作的客户端代码:

 <body> <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script> <script src="https://code.jquery.com/jquery-1.11.1.js"></script> <script> $(function(){ var socket = io('http://localhost:8080'); console.log("Socket connected"+socket.connected); socket.on('notification', function(value){ //insert your code here }); }); </script> 

在服务器端 (只处理1个sockets)

 var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var port = process.env.PORT || 8080; app.get('/', function(req, res){ console.log("app works"); }); io.on('connection', function(socket){ socket.emit('notification', {message:"hi"}); }); http.listen(port, function(){ console.log('listening on :' + port); }); 

在这里输入图像描述

在这里输入图像描述

  1. 使用server.listen()可以修复它;