Nodeでnode_modulesにパスを通す

nodeのexpressサーバを起動しようとしてexpressモジュールがない、と言われた。
モジュールは入れているはずなのでパスが通ってない、ということだったのだが、モジュールのパスをどこに通したらいいのか、のメモ。

expressのインストール

順を追って、まずはexpressのインストール。
グローバルに入れた。

1
$ npm install -g express

参考にさせてもらったページでは、以下のようにパスを通す、とあったのだけれどそれではダメだった。

1
2
# node_modules
export NODE_PATH=/usr/local/lib/node_modules

動作させてみたコードは以下。

1
2
3
4
5
6
7
app = require('express')();

app.get('/', function(req, res){
        res.send('hello world');
    });

app.listen(3000);

エラー内容は以下の様な感じ。

1
2
3
4
5
module.js:338
    throw err;
          ^
Error: Cannot find module 'express'
...

足りないモジュールのインストール

expressのモジュールが足らない、と言われている。
調べると、足りてないモジュールを一気にインストールするコマンドがある、とのことでそれも実行してみたが、expressはもちろん入っているので効果なし。

1
$ npm install -g npm-install-missing

モジュールのパスを調べて通す

色々調べると、以下のコマンドでモジュールの場所を表示させることが可能だった。

1
2
$ npm root -g
/Users/{USER_NAME}/.nodebrew/node/v0.12.7/lib/node_modules

実際にliしてみると、expressなども入っているようだったので、そこにパスを改めて通す。

1
2
# node_modules
export NODE_PATH="/Users/{USER_NAME}/.nodebrew/node/v0.12.7/lib/node_modules"

設定ファイルを読み込み直すかターミナルを再起動。
再び上記のコードからサーバを起動させてみたところ、無事、 http://localhost:3000にアクセス出来た。

参考

   このエントリーをはてなブックマークに追加