2012-03-26 32 views
7

Tenía mi servidor trabajando con una versión anterior de node.js, npm y socket.io, pero después de actualizar empecé a tener problemas con socket.io:Error: No se puede encontrar el módulo './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) 

Antes de realizar la actualización, tenía un enlace simbólico para socket.io en node_modules que apuntaba al directorio "centrally installed" con el mismo nombre. Recientemente he intentado instalar socket.io local para mi proyecto mediante el comando:

npm install socket.io 

que colocó bajo socket.io node_modules en mi proyecto. Al principio me pareció extraño que el mensaje de error dijera "./lib/socket.io", pero cuando lo investigué encontré que el proyecto/node_modules/socket.io/index.js requiere socket.io así:

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

Pero no hay nada allí excepto el transporte:

...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 

¿Debería haber otro directorio o un archivo socket.io socket.io.js en lib? ¿Por qué index.js necesitaría un archivo interno que parece estar perdido?

Versiones:

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 /' debe tener varios archivos JS dentro, incluyendo 'socket.io.js'. O al menos lo hace el mío (nodo 0.6.5, npm 1.1.0, socket.io 0.9.2). –

+0

@Felix Loether - Gracias por la confirmación. Ahora necesito descubrir por qué no obtuve todos los archivos que debería tener. – ghbarratt

Respuesta

17

odio a responder a mi propia pregunta, pero sí que las cosas se resuelven y no había otras respuestas, así que voy a añadir esto en caso de que puede ayudar a alguien más.

Con el comentario de Felix Loether (que hice +1) estaba bastante seguro de que no obtuve todos los archivos que debería tener durante el npm install socket.io. Intenté hacer un apt-get update/upgrade, pensando que podría necesitar una actualización para tar o algo así, pero los resultados seguían siendo los mismos.

Estaba notando una respuesta 304 en la salida de instalación y me pregunté en ese momento si había algún tipo de caché npm que debería intentar borrar. I discovered Podría borrar el caché npm con el comando: npm cache clean. Limpiar el caché finalmente me ayudó a superar el problema de no errores hasta el tiempo de ejecución.

Luego comencé a recibir un mensaje de error: make: node-waf: Command not found que lead me to reinstall node.

¡Y después de todo eso, funcionó!

+2

+1 para citar 'npm cache clean'. Esto resuelve un problema similar. –

Cuestiones relacionadas