JavaScript
Node.js

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

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

環境

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いい感じに通してくれること多いから忘れがちになるよね(