2012-03-26 2 views
7

У меня был мой сервер, работающий с более ранней версией node.js, npm и socket.io, но после обновления я начал получать проблемы с socket.io:Ошибка: не удается найти модуль ./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) 

Перед обновлением у меня была символическая ссылка для socket.io в узле node_modules, указывающая на «централизованно установленный» каталог с тем же именем. Недавно я попытался установить socket.io местный к моему проекту, выполнив команду:

npm install socket.io 

, которые размещены Socket.io под node_modules в моем проекте. Сначала мне показалось странным, что в сообщении об ошибке говорилось «./lib/socket.io», но когда я просмотрел его, я обнаружил, что для проекта/node_modules/socket.io/index.js требуется socket.io, например:

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

Но нет ничего, кроме транспорта:

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

Должен ли быть другой Socket.io директории или socket.io.js файл под Lib? Почему для index.js требуется внутренний файл, который, кажется, отсутствует?

Версии:

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 /' должно содержать несколько JS-файлов внутри него, включая 'socket.io.js'. Или, по крайней мере, мой (узел 0.6.5, npm 1.1.0, socket.io 0.9.2). –

+0

@Felix Loether - Спасибо за подтверждение. Теперь мне нужно выяснить, почему я не получил все файлы, которые мне нужны. – ghbarratt

ответ

17

Я ненавижу, чтобы ответить на мой собственный вопрос, но я действительно получить вещи решены, и не было никаких других ответов, так что я собираюсь добавить это в случае, если это может помочь кому-то еще.

С комментарием Феликса Лоэтера (который I + 1ed) я был вполне уверен, что не получил все файлы, которые я должен был иметь во время npm install socket.io. Я пробовал делать apt-get update/upgrade, думая, что мне может понадобиться обновление для tar или что-то еще, но результаты остались прежними.

Я замечал ответ 304 на выходе установки и задавался вопросом в этой точке, если был какой-то кеш npm, который я должен попробовать очистить. I discovered Я мог очистить кэш npm с помощью команды: npm cache clean. Очистка кеша, наконец, заставила меня пройти мимо ошибок без ошибок - до тех пор, пока не будет.

Затем я начал получать сообщение об ошибке: make: node-waf: Command not found которое lead me to reinstall node.

И все-таки это сработало!

+2

+1 для цитирования 'npm cache clean'. Это решает одну подобную проблему. –

Смежные вопросы