Edited at

Node.jsで、存在するはずのmoduleがrequireでエラーになることについて

More than 1 year has passed since last update.

引っかかる人多そうなのと、備忘録として


環境

Mac(OS X)


問題

初めてのJavaScriptだー

$ npm -g install モジュール名

でmoduleをインストール。よっしゃサンプルプログラムを動かすでーと意気込んでいると


Error: Cannot find module 'モジュール名'


あの、、、、、

なんでかrequireのところでエラー起こるんですけど、、、、


原因

調べたところ、こんなものを見つけた。

http://phiary.me/npm-node-js-require-module-memo/

require で探すモジュールのパスは global.module.pathsから見れるらしい。

$node

>global.module.paths
[ 'e:/Users/hoge/Documents/work/node_modules',
'e:/Users/hoge/Documents/node_modules',
'e:/Users/hoge/node_modules',
'e:/Users/node_modules',
'e:/node_modules' ]

(上記の表示内容はphiaryさんのをまるっと持ってきました)

(ちなみに対話型の画面は.exitで抜けられます。←quit()連打して少し詰まった)

つまるところ、せっかく-gをつけてグローバルに使えるようにしたのにnode自体がそれどこ?状態な訳だ。

Win環境の時は散々気にしてたPATHが通っていないということだった。


解決法

ということでPATHを通そう

https://qiita.com/hikaruna/items/abdadca27f12c0e4eb78

ここを参考に

$ echo $NODE_PATH

と入力してみると、なんも返ってこなかった。やっぱり、、、

$ export NODE_PATH=`npm root -g`

と入力すると、うまく動いた!

(なお、これはnodeのPATHなので全体のPATHとは違うらしい。)

Mac使ってるとPATHいい感じに通してくれること多いから忘れがちになるよね(