Ошибка: не удается найти модуль "./lib/socket.io" - PullRequest
7 голосов
/ 26 марта 2012

Мой сервер работал с более ранними версиями node.js, npm и socket.io, но после обновления у меня начались проблемы с 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 в моем проекте. Сначала мне показалось странным, что в сообщении об ошибке говорилось: 1007 *

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

socket.io@0.9.2

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

1 Ответ

17 голосов
/ 06 апреля 2012

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

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

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

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

И после всего этого все заработало!

...