错误:找不到模块'./lib/socket.io'

我有我的服务器与早期版本的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) 

在升级之前,我在node_modules下有一个socket.io的符号链接,指向具有相同名称的“集中安装”目录。 最近我试图通过发出命令来安装socket.io本地到我的项目:

 npm install socket.io 

它将socket.io放置在我的项目的node_modules下。 我发现起初奇怪的是,错误信息是“./lib/socket.io”,但是当我看到它时,我发现project / 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目录或lib下的一个socket.io.js文件? 为什么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 

我不想回答我自己的问题,但我确实已经解决了问题,没有其他答案,所以我会添加这个以防万一可以帮助别人。

随着Felix Loether的评论(我+ 1ed),我相当肯定,我没有得到所有的文件,我应该在npm install socket.io 。 我试着做一个apt-get update / upgrade ,认为我可能需要tar或更新,但结果仍然是一样的。

我在安装输出中注意到了一个304响应,并想知道是否有某种npmcaching,我应该尝试清除。 我发现我可以使用以下命令清除npmcaching: npm cache clean 。 清理caching最终让我超越了无错运行的问题。

然后我开始得到一个错误信息: make: node-waf: Command not found 导致我重新安装节点的命令 。

毕竟,它的工作!