2012-03-26 48 views
7

Ho avuto il mio server in funzione con una versione precedente di node.js, npm e socket.io ma dopo l'aggiornamento ho iniziato a riscontrare problemi con socket.io:Errore: impossibile trovare il modulo './lib/socket.io'

$ node server.js 

node.js:237 
     throw e; // process.nextTick error, or 'error' event on first tick 
      ^
Error: Cannot find module './lib/socket.io' 
    at Function._resolveFilename (module.js:333:15) 
    at Function._load (module.js:280:25) 
    at Module.require (module.js:357:17) 
    at require (module.js:373:17) 
    at Object.<anonymous> (/usr/local/lib/node_modules/socket.io/index.js:8:18) 
    at Module._compile (module.js:444:26) 
    at Object..js (module.js:462:10) 
    at Module.load (module.js:351:32) 
    at Function._load (module.js:309:12) 
    at Module.require (module.js:357:17) 

Prima dell'aggiornamento, avevo un collegamento simbolico per socket.io sotto node_modules che puntava alla directory "installata centralmente" con lo stesso nome. Recentemente ho provato a installare socket.io locale per il mio progetto con il comando:

npm install socket.io 

che ha posto sotto socket.io node_modules nel mio progetto. All'inizio ho trovato strano che il messaggio di errore dicesse "./lib/socket.io" ma quando ho esaminato il file ho trovato che project/node_modules/socket.io/index.js richiede socket.io in questo modo:

module.exports = require('./lib/socket.io'); 

Ma non c'è nulla, tranne il trasporto:

...project/node_modules/socket.io/lib 
$ ll 
total 24 
drwxrwxr-x 3 ghbarratt dev 4096 Mar 26 14:38 . 
drwxrwxr-x 5 ghbarratt dev 4096 Mar 26 15:03 .. 
-rw-rw-r-- 1 ghbarratt dev 10777 Mar 6 16:37 transport.js 
drwxrwxr-x 3 ghbarratt dev 4096 Mar 26 14:38 transports 

Dovrebbe esserci un'altra directory socket.io o un file socket.io.js sotto lib? Perché index.js richiederebbe un file interno che sembra mancare?

Versioni:

node -v 
v0.7.7-pre 

npm -v 
1.1.12 

[email protected] 

Distributor ID: Ubuntu 
Description: Ubuntu 10.10 
Release:  10.10 
Codename:  maverick 
+3

'node_modules/socket.io/lib /' deve contenere diversi file JS al suo interno, incluso 'socket.io.js'. O almeno il mio lo fa (nodo 0.6.5, npm 1.1.0, socket.io 0.9.2). –

+0

@Felix Loether - Grazie per la conferma. Ora ho bisogno di capire perché non ho ottenuto tutti i file che dovrei avere. – ghbarratt

risposta

17

odio rispondere alla mia domanda, ma ho fatto fare le cose risolte e non c'erano altre risposte in modo che sto per aggiungere questo nel caso in cui esso può aiutare qualcun altro.

Con il commento di Felix Loether (che I + 1ed) ero abbastanza certo che non ho ricevuto tutti i file che dovrei avere durante lo npm install socket.io. Ho provato a fare un apt-get update/upgrade, pensando che potrei aver bisogno di un aggiornamento per tar o qualcosa del genere, ma i risultati erano sempre gli stessi.

Avevo notato una risposta 304 nell'output di installazione e mi sono chiesto a quel punto se c'era una sorta di cache npm che dovrei provare a cancellare. I discovered Ho potuto cancellare la cache npm con il comando: npm cache clean. La pulizia della cache mi ha finalmente superato il problema di no-errors-until-runtime.

Ho quindi iniziato a ricevere un messaggio di errore: make: node-waf: Command not found che lead me to reinstall node.

E dopo tutto, ha funzionato!

+2

+1 per citare 'npm cache clean'. Questo risolve un problema simile. –

Problemi correlati