2017-07-24 5 views
0

Im Fall der Entwicklung einer Videochat-App versuche ich socket.io zu verwenden. Um mich dieser Bibliothek vorzustellen, habe ich verschiedene Tutorials verfolgt, ich habe immer das gleiche Problem.Kann Socket.io 2.0.3 nicht verwenden

Jedes Mal, wenn ich versuchen, die Bibliothek zu nennen wie:

var io = require('socket.io')(http); 

ich eine Syntax Problem haben wie:

Projects/2017_07_24_firstSocketApp/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/WebSocket.js:140 
    this._ultron.on('data', (data) => { 
           ^

SyntaxError: missing) after argument list 
    at exports.runInThisContext (vm.js:53:16) 
    at Module._compile (module.js:413:25) 
    at Object.Module._extensions..js (module.js:448:10) 
    at Module.load (module.js:355:32) 
    at Function.Module._load (module.js:310:12) 
    at Module.require (module.js:365:17) 
    at require (module.js:384:17) 
    at Object.<anonymous> (/Users/sandale/Documents/Projects/2017_07_24_firstSocketApp/node_modules/socket.io/node_modules/engine.io/node_modules/ws/index.js:9:19) 
    at Module._compile (module.js:430:26) 
    at Object.Module._extensions..js (module.js:448:10) 
C02RN10GG8WN:2017_07_24_firstSocketApp $ 

So entscheide ich mich wie socket.io 1.7.3 die vorherige Version verwenden Das wirkt wie ein Zauber. Ich möchte nur wissen, ob es ein häufiges Problem ist oder nicht, und ob jemand einen Weg kennt, es zu lösen.

Dank durch Voraus

Hier ist mein Code für dieses Beispiel: index.js

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 

io.on('connection', function(socket){ 
    console.log('a user connected'); 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

index.html

<!doctype html> 
<html> 
    <head> 
    <title>Socket.IO chat</title> 
    <style> 
     * { margin: 0; padding: 0; box-sizing: border-box; } 
     body { font: 13px Helvetica, Arial; } 
     form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; } 
     form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; } 
     form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; } 
     #messages { list-style-type: none; margin: 0; padding: 0; } 
     #messages li { padding: 5px 10px; } 
     #messages li:nth-child(odd) { background: #eee; } 
    </style> 
    </head> 
    <body> 
    <ul id="messages"></ul> 
    <form action=""> 
     <input id="m" autocomplete="off" /><button>Send</button> 
    </form> 
    <script src="/socket.io/socket.io.js"></script> 
    <script> 
     var socket = io(); 
    </script> 
    </body> 
</html> 
+0

Sieht so aus, als ob Sie eine alte Version von Node.js verwenden. Was gibt 'node --version' zurück? – robertklep

+0

Wow, ich war total veraltet. Ich aktualisiere meine Version von 3.3.1 auf 6.11.1. Arbeite jetzt viel besser !! – SandaleRaclette

+0

@robertklep - Bitte schreiben Sie eine Antwort, damit diese Frage geschlossen werden kann. – jfriend00

Antwort

0

Pfeil Funktionen ((data) => { ... }) sind nur in (relativ unterstützt) neue Versionen von Node.js (seit v4.5), es sieht also so aus, als ob Sie eine Version von Node.js verwenden, die zu alt ist.