Error: Cannot find module 【NODE_PATH】【npm】【Node.js】
【問題】
npm使ってnodeのモジュールをインストールしますよね
% sudo npm install -g argv
こんな感じ。で、こんな感じで呼ぼうとしますよね
app.js
var argv = require('argv');
で、実行すると
% node app.js module.js:340 throw err; ^ Error: Cannot find module 'argv'
npm install するときに -g してたから呼べると思ってたんだけどなー
【調査】
% which node /usr/local/bin/node % which npm /usr/local/bin/npm % echo $NODE_PATH /usr/local/lib/node_modules
別に正しい気がするが…
- Express module not found
- そもそもPATHって何?
【原因】
~/.zshrc
NODE_PATH=/usr/local/lib/node_modules NPM_PATH=/usr/local/bin/npm export PATH=/usr/local/bin:~/bin:$NPM_PATH:$NODE_PATH:$PATH
そもそも export PATH=some/path:another/path:any/other/path:$PATH とは、コマンドパスを通すものであって、シェルから使用可能なコマンドのバイナリへのアクセスを可能にするもの。だから、上記のNPM_PATHはPATHにバインドされてしかるべき。これによってシェルで/usr/local/bin/npmと意識して打たなくてもnpmというコマンドとして使えるようになる。
一方、NODE_PATHは、node的にnode_modulesへのアクセスパスを定義しているだけなので$PATH(コマンドパス)へバインドしても意味ない。$NODE_PATHという名前の環境変数としてexportしてあげないといけない。
【解決】
~/.zshrc
export NODE_PATH=/usr/local/lib/node_modules NPM_PATH=/usr/local/bin/npm export PATH=/usr/local/bin:~/bin:$NPM_PATH:$NODE_PATH:$PATH
【雑感】
知らなくて恥ずかしいことが多すぎる。はやく仕事できるマンになりたい。
英語喋れるようになりたいなー
DRY
改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/30
- メディア: 大型本
- この商品を含むブログを見る
- 作者: 天田士郎
- 発売日: 2016/12/26
- メディア: Kindle版
- この商品を含むブログを見る
はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-
- 作者: 松島浩道
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2013/03/13
- メディア: 単行本
- クリック: 15回
- この商品を含むブログ (5件) を見る