2012年4月6日金曜日

[Node]expressで”Cannot find module ‘express’が出る

どうも、俺@寝る前です。
前回の内容とかぶるのですが。


開発スピードの超早いNodeですが、あまりにも早過ぎるため開発中にどんどん新しいバージョンがリリースされてしまいます。
流行りもの好きな人にとっては居ても立ってもいられない状況であり、それを解決するためのツールの一つにnaveがあります。
もはや説明するまでもなく、Nodeのバージョン管理ツールです。

今日はnaveを使ってタイトルのようなエラー、または他にもNodeで使うはずのモジュールが「Cannot findだぜ!」となる人へ。

$ node app.jp
node.js:12
throw e; / process.nextTick error, or ‘error’ event on first tick
^
Error: Cannot find module ‘express'

要は環境変数NODE_PATHに対し、正しくNodeモジュール群のパスを示せれば良いので、

export NODE_PATH=/path/to/node_modules
とすれば良いのですが、
「/path/to/node_modulesってどこだよっ!?」って人は、
naveをインストールしたディレクトリを起点に

[naveインストールディレクトリ]/installed/[バージョン番号]/lib/node_modules
にあります。

これで解決なのですが、毎回 export 打つのは面倒です。なので、

$ vim ~/.zshrc
---------------------------------
export NODE_PATH=/path/to/node_modules
としても良いのですが、.zshrcにハードコーディングするとバージョンが変わるたびに.zshrcを書き換えなければいけません。
そこで、もう一つの代案として、

$ vim /path/to/nave.sh
-----------------------------------
# nave_use()を探して、その関数内にある
local lib=“$prefix/lib/node:$prefix/lib/node_modules
と変更する方法でも良いです。
ちなみにnave.shは僕の環境だと

$ ls -la ~/.nave

合計 116
drwxr-xr-x 5  koexuka groupname  4096  3月  6 00:21 .
drwxr-xr-x 6 koexuka groupname  4096  3月  6 00:16 ..
drwxr-xr-x 8 koexuka groupname  4096  3月  3 14:33 .git
-rw-r--r-- 1 koexuka groupname    14  3月  3 14:33 .gitignore
-rw-r--r-- 1 koexuka groupname    14  3月  3 14:33 .npmignore
-rw-r--r-- 1 koexuka groupname     9  3月  3 17:24 .zshenv
-rw-r--r-- 1 koexuka groupname   248  3月  3 14:33 AUTHORS
-rw-r--r-- 1 koexuka groupname  4002  3月  3 14:33 README.md
drwxr-xr-x 4 koexuka groupname  4096  3月  4 15:04 installed
-rwxr-xr-x 1 koexuka groupname 12918  3月  4 15:06 nave.sh
-rw-r--r-- 1 koexuka groupname   345  3月  4 15:02 naverc
-rw-r--r-- 1 koexuka groupname   197  3月  3 14:33 package.json
drwxr-xr-x 3 koexuka groupname  4096  3月  4 15:04 src
にあります。

以上でぇぇぇぇぇぇす。

0 件のコメント: