7

以前のバージョンの 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

私のプロジェクトの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

libの下に別のsocket.ioディレクトリまたは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
4

1 に答える 1

17

私は自分の質問に答えるのが嫌いですが、問題は解決しましたが、他に答えはありませんでした。他の人の助けになる場合に備えて、これを追加します。

Felix Loether のコメント (私が +1 したもの) で、npm install socket.io. tar などの更新が必要かもしれないと考えてapt-get update/を実行してみましたが、結果は同じでした。upgrade

インストール出力に 304 応答があることに気付き、その時点で、クリアを試みるべき何らかの npm キャッシュがあるかどうか疑問に思いました。次のコマンドで npm キャッシュをクリアできることを発見npm cache cleanしました。キャッシュをクリーニングすると、最終的に実行時までエラーが発生しない問題を回避できました。

その後、エラー メッセージが表示されるようになりました。make: node-waf: Command not foundこれにより、 node を再インストールすることになりました。

そして結局、それはうまくいきました!

于 2012-04-05T20:13:44.977 に答える