wake-up-neo.net

node.js /socket.io/socket.io.js nicht gefunden

ich bekomme immer wieder die Fehlermeldung /socket.io/socket.io.js 404 (nicht gefunden) Unbekannter Referenzfehler: io ist nicht definiert

mein Code lautet

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

und

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

worin besteht das Problem ???

jede Hilfe ist willkommen!

34
hausinho

Das Kopieren von socket.io.js in einen öffentlichen Ordner (etwas als resources/js/socket.io.js) ist nicht der richtige Weg.

Wenn der Socket.io-Server ordnungsgemäß auf Ihren HTTP-Server wartet, wird er die Client-Datei automatisch über http://localhost:<port>/socket.io/socket.io.js bereitstellen. Sie müssen sie nicht finden oder in einem öffentlich zugänglichen Ordner als resources/js/socket.io.js kopieren und manuell übergeben.

Codebeispiel 
Express 3.x -Express 3 erfordert, dass Sie einen http.Server instanziieren, an den socket.io zuerst angehängt wird 

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

Glückliche Kodierung :)

61
Amol M Kulkarni

So finden Sie socket.io.js für die Clientseite

installieren Sie socket.io

npm install socket.io

socket.io-Client finden

find ./ | grep client | grep socket.io.js

ergebnis:

./node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js

kopieren Sie socket.io.js in Ihre Ressourcen:

cp ./node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js /home/proyects/example/resources/js/

in Ihrer HTML:

<script type="text/javascript" src="resources/js/socket.io.js"></script>
10
ZiTAL

Es scheint, dass diese Frage vielleicht nie beantwortet wurde (obwohl es für das OP zu spät sein kann, werde ich es für jeden beantworten, der in der Zukunft auf sie stößt und das Problem lösen muss).

Anstelle von npm install socket.io müssen Sie npm install socket.io --save ausführen, damit das socket.io-Modul in Ihrem Webentwicklungsordner installiert wird (führen Sie diesen Befehl an der Basisposition/in der sich Ihre index.html oder index.php befindet) aus. Dadurch wird socket.io in dem Bereich installiert, in dem der Befehl ausgeführt wird (nicht global). Außerdem wird die package.json-Datei automatisch korrigiert/aktualisiert, sodass node.js weiß, dass er vorhanden ist.

Ändern Sie dann Ihren Quellpfad von '/socket.io/socket.io.js' in 'http://' + location.hostname + ':3000/socket.io/socket.io.js'.

7
Blubberguy22

... "Sie fragen sich vielleicht, woher die Datei /socket.io/socket.io.js stammt, da wir sie weder hinzufügen noch im Dateisystem existieren. Dies ist Dies wird von io.listen auf dem Server ausgeführt. Es erstellt einen Handler auf dem Server, um die Skriptdatei socket.io.js bereitzustellen. "

aus dem Buch Socket.IO Echtzeit-Web Anwendungsentwicklung, Seite 56

1

dies hat zwar nichts mit dem OP zu tun, aber wenn Sie dieses Problem bei der Beibehaltung des Codes eines anderen Benutzers feststellen, wird das Problem möglicherweise durch die Coder-Einstellung io.set('resource', '/api/socket.io'); im Anwendungsskript verursacht Code wäre <script>type="text/javascript" src="/api/socket.io/socket.io.js"></script>.

0
jcomeau_ictx

Sie müssen nur https://socket.io/get-started/chat/ folgen, und alle werden funktionieren. 

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
http.listen(3000, function(){
  console.log('listening on *:3000');
});
0
Tomas Kukis