yum で Node.js と npm(Node.js Package Manager)をインストールし、socket.io をインストールした後、作成したアプリを起動したところ、下記のエラーが発生しました。
module.js:340 throw err; ^ Error: Cannot find module 'socket.io'
その際の対応方法を記載しています。
エラー詳細
今回のエラー詳細は下記です。
$ node app.js module.js:340 throw err; ^ Error: Cannot find module 'socket.io' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) at Object. (/home/haruki/nodejs/app.js:2:10) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) $
作成したアプリで、socket.iu を利用しています。
原因
今回のエラーの原因は、socket.io をインストールする際の「npm install socket.io」コマンドを、作成アプリの配置先とは異なる場所で実行していた事が原因でした。
実際には、異なる場所でインストールした場合の対応もあると思いますが、今回はてっとり早く作成アプリの稼働確認をしたかった為、下記の対策としました。
対策
一旦の対策として、下記を実行すると問題が解消し、作成アプリを正常起動できました。
- まず、socket.io をインストールしたディレクトリに移り、「npm uninstall socket.io」でアンインストールを実施
- 作成アプリの配置先ディレクトリへ移動
- 「npm install socket.io」でインストールを実行
ちなみに、作成アプリが「app.js」の場合の、簡易作業/確認手順は下記になります。
# npm uninstall socket.io # exit $ cd (app.js配置先ディレクトリ) $ ls -1 app.js $ npm install socket.io $ ls -1 app.js node_modules $ $ ls -1 node_modules/ socket.io $ $ node app.js
以上が、今回の問題に対する私の環境での対処方法でした。