2012-03-26 228 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) 

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

npm install socket.io 

它放在我的项目下node_modules socket.io。起初我发现这个错误消息是说“./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 

[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)。 – 2012-03-26 20:09:44

+0

@ Felix Loether - 感谢您的确认。现在我需要弄清楚为什么我没有得到我应该拥有的所有文件。 – ghbarratt 2012-03-26 20:25:36

回答

17

我不想回答我的问题,但我没有把事情解决了,有没有其他的答案,所以我要在情况下,它可以帮助别人添加此。

随着Felix Loether的评论(I + 1ed)我很确定我没有得到我在npm install socket.io期间应该拥有的所有文件。我试图做一个apt-get update/upgrade,认为我可能需要更新焦油或其他东西,但结果仍然是一样的。

我在安装输出中注意到了一个304响应,并想知道是否有某种npm缓存需要我尝试清除。 I discovered我可以使用以下命令清除npm缓存:npm cache clean。清理缓存最终让我通过了无错运行问题。

然后我开始得到一个错误信息:make: node-waf: Command not found其中lead me to reinstall node

而且毕竟,它的工作!

+2

用于引用'npm cache clean'。这解决了一个类似的问题。 – 2013-07-22 08:48:27