意外的令牌:io.listen(服务器)

时间:2014-09-24 16:39:08

标签: javascript jquery node.js sockets websocket

我是node.js的新手。在一些教程之后,我创建了一个名为server.js的文件,并将此代码放在该文件中:

var http = require("http");
var url = require('url');
var fs = require('fs');

var server = http.createServer(function(request, response){
    console.log('Connection');
    var path = url.parse(request.url).pathname;
 console.log(path);
    switch(path){
        case '/':
            response.writeHead(200, {'Content-Type': 'text/html'});
            response.write('hello world');
            break;
        case '/socket.html':
    response.writeHead(200, {'Content-Type': 'text/html'});
            response.write('Inside hello world');
            fs.readFile(__dirname + path, function(error, data){
                if (error){
                    response.writeHead(404);
                    response.write("opps this doesn't exist - 403");
                }
                else{
                    response.writeHead(200, {"Content-Type": "text/html"});
                    response.write(data, "utf8");
                }
            });
            break;
        default:
            response.writeHead(404);
            response.write("opps this doesn't exist - 405");
            break;
    }
    response.end();
});

server.listen(8001);

var io.listen(server);

然后我使用命令node C:\Users\user\Desktop\server.js运行它,我收到此错误:

C:\Users\user\Desktop\server.js:38
var io.listen(server);
  ^
SyntaxError: Unexpected token .
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3

此行导致错误:

var io.listen(server);

最初我想过安装npmsocket.io因此我尝试了这个:

npm install --save socket.io

但在此之后我也得到同样的错误:

C:\Users\user\Desktop\server.js:38
var io.listen(server);
  ^
SyntaxError: Unexpected token .
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3

请告知如何解决此错误。

2 个答案:

答案 0 :(得分:4)

var关键字用于声明变量。我怀疑你错过了变量名称:

var foo = io.listen(server);

除此之外,代码中的其他任何地方都没有io。你错过了一个要求电话吗?


socket.io 库显然没有捆绑:

C:\>node
> require("socket.io");
Error: Cannot find module 'socket.io'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at repl:1:1
    at REPLServer.self.eval (repl.js:110:21)
    at repl.js:249:20
    at REPLServer.self.eval (repl.js:122:7)
    at Interface.<anonymous> (repl.js:239:12)
    at Interface.EventEmitter.emit (events.js:95:17)

Installation虽然只是一个班轮:

npm install socket.io

答案 1 :(得分:3)

var io.listen(server);

通过使用关键字var,它需要一个赋值语句或声明,并且您基本上尝试将方法调用用作变量名。

至于删除它,你会得到一个没有定义错误的错误,因为它看起来好像你没有调用该模块。

var io = require("socket.io");