node for Windows - npm install -g オプションでインストールされるPathはデフォルトでは通っていない件。

公開:2014-09-25 09:00
更新:2017-07-29 13:17
カテゴリ:node.js,intellisense,javascript

www.sfpgmr.netのテコ入れをはじめる。

横スクロール・アクションを作りたいという熱意はintellisenseという大いなる壁に阻まれにっちもさっちもいかないうちにちょっと冷めてきてしまった。歳を取ってくるとほんとに熱意とかモチベーションとかすぐ萎えてしまう。もともと根気のない人間ではあるが若いころはもうちょっとましだったように思う。

それはさておき、そのゲームをホストするベースとなるwww.sfpgmr.netサーバーはブログの移転により閑古鳥が鳴き、寂しい限りである。ここは一つテコ入れを行おうと昨日から取組みはじめた。intellisense問題も一段落?したような気もするので。

まずは環境を整理した。作成とチェックはWin8.1マシンで行う。ツールはVS2013 Express。まずはwww.sfpgmr.netのコンテンツはgitで管理すべくgithubのレポジトリに登録した。さらには作成環境にcloneした。

npm install -g

node.js環境も整理していたところnpm install -gしたモジュールがrequireできないことを思い出した。エラー内容としてはモジュールが見つからないというエラーだ。Pathに絡むものそうだということはなんとなくわかっていたが、とりあえずはローカルでnpm installすることでごまかしていた。

ネットで情報がないか調べたところ、どうもデフォルトではnpm install -gでインストールされるPath(C:\Users\(ユーザー名)\AppData\Roaming\npm\node_modules)requireが参照するPathには含まれないことがわかった。何ということだ。requireで参照するPathはデフォルトでは以下となっている。

  1. (カレントディレクトリ)\repl\node_modules
  2. (カレントディレクトリ)\node_modules
  3. (カレントディレクトリの1つ親のディレクトリ)\node_modules
  4. 3.をドライブのルートディレクトリになるまで繰り返し
H:\pj>node
> global.module.paths
[ 'H:\pj\repl\node_modules',
  'H:\pj\node_modules',
  'H:\node_modules' ]
>

これを解消する方法は3つほどある。

  1. NODE_PATHでグローバルにモジュールが格納されるPathを指定する。
  2. global.module.pathsにグローバルにモジュールが格納されるPathをpushする。
  3. npm linkグローバルにモジュールが格納されるPathをローカルのnode_modulesにリンクする。

1番目と2番目の方法はintellisenseが効かない。またしてもintellisenseの罠に引っかかったよ。。どうもローカルのnode_moduleでないとintellisenseが効かない仕様のようだ。。しょうがないので3番目の方法で行くことにしよう。しかしintellisenseにこうも左右される人ってそうそういないだろうね。どれだけ記憶力がないんだか。。