2012-03-26 169 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