2014-09-24 85 views
0

我是node.js的新手。繼一些教程,我創建了一個名爲server.js文件,並把這個代碼在該文件中:意外的令牌:io.listen(服務器)

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);

起初我以爲安裝的10封裝socket.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 

請指點如何解決這個錯誤。

+0

你爲什麼說'var'然後不聲明變量? – berrberr 2014-09-24 16:40:13

+0

即使我刪除'var',我得到的錯誤:'io.listen(server); ReferenceError:io沒有定義# – user182944 2014-09-24 16:42:29

+1

所以在你使用它之前要求它:'var io = require('socket.io');' – berrberr 2014-09-24 16:44:20

回答

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 
+0

在這種情況下,我得到錯誤:'var foo = io.listen(server ); ReferenceError:io未定義# – user182944 2014-09-24 16:43:56

+0

當然,'io'在代碼中的任何地方都沒有定義。 – 2014-09-24 16:44:21

+0

是的。由於我對node.js沒有任何想法,所以我盲目地遵循這個鏈接:http://danielnill.com/nodejs-tutorial-with-socketio/。你能建議如何解決這個問題嗎? – user182944 2014-09-24 16:45:46

3
var io.listen(server); 

使用,預計關鍵字var賦值語句或聲明,以及y你基本上試圖使用方法調用作爲變量名稱。

至於刪除它,你會得到一個IO沒有定義的錯誤,因爲它看起來像你沒有調用模塊。

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