2012-03-26 39 views
7

Mój serwer pracował z wcześniejszą wersją pliku node.js, npm i socket.io, ale po aktualizacji zacząłem otrzymywać problemy z plikiem socket.io:Błąd: Nie można znaleźć modułu "./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) 

Przed aktualizacją miałem dowiązanie symboliczne dla socket.io pod węzłem node_modules wskazujące na katalog "centralnie zainstalowany" o tej samej nazwie. Ostatnio próbowałem instalacji socket.io lokalnego do mojego projektu, wydając komendę:

npm install socket.io 

który umieszczony socket.io pod node_modules w moim projekcie. Początkowo na początku było to dziwne, że komunikat o błędzie mówi "./lib/socket.io", ale gdy go obejrzałem, okazało się, że projekt/node_modules/socket.io/index.js wymaga socket.io jak:

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

Ale nie ma tam nic oprócz transportu:

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

powinien istnieć innego katalogu lub pliku socket.io socket.io.js pod lib? Dlaczego indeks.js wymagałby wewnętrznego pliku, który wydaje się być brakujący?

Wersje:

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 /' powinno zawierać kilka plików JS, w tym 'socket.io.js'. Lub przynajmniej moja robi (węzeł 0.6.5, npm 1.1.0, socket.io 0.9.2). –

+0

@Felix Loether - Dziękujemy za potwierdzenie. Teraz muszę się dowiedzieć, dlaczego nie otrzymałem wszystkich plików, które powinienem mieć. – ghbarratt

Odpowiedz

17

Nienawidzę odpowiedzieć na moje własne pytanie, ale ja dostać rzeczy rozwiązany i nie było żadnych innych odpowiedzi, więc mam zamiar dodać to w przypadku może pomóc ktoś inny.

Z komentarzem Felixa Loether (który I + 1ed) byłem dość pewien, że nie dostałem wszystkich plików, które powinienem mieć podczas npm install socket.io. Próbowałem zrobić apt-get update/upgrade, myśląc, że potrzebuję aktualizacji dla tar lub czegoś, ale wyniki były nadal takie same.

Zauważyłem odpowiedź 304 na wyjściu instalacji i zastanawiałem się w tym miejscu, czy był jakiś rodzaj pamięci podręcznej npm, którą powinienem spróbować wyczyścić. I discovered Mogłem wyczyścić pamięć podręczną npm za pomocą polecenia: npm cache clean. Czyszczenie pamięci podręcznej w końcu doprowadziło mnie do problemu braku błędów aż do uruchomienia.

Następnie otrzymałem komunikat o błędzie: make: node-waf: Command not found który lead me to reinstall node.

I po tym wszystkim zadziałało!

+2

+1 dla cytowania 'npm cache clean'. To rozwiązuje jeden podobny problem. –

Powiązane problemy