環境
- Windows 10
- node.js 8.11.2
Cannot find module が出た!
Node.js 超入門の通りに進めていたら、初めてejsを使う場面で、Cannot find module 'ejs' が出て起動できずに困った。
次のページを見るとコラムがあって、このエラーが出たら、プロジェクトディレクトリ下で以下コマンドを叩けという。
npm init
npm install --save ejs
でもこれ、結局プロジェクト内にモジュールをローカルインストールしてるだけじゃん、と思い、ちょっと解決方法とは違うんじゃないかなーと思って調べた。
原因を調べる
まずはnpmのグローバルオブジェクトがインストールされるディレクトリを調べる。
npm bin -g
C:\Users\ユーザー名\AppData\Roaming\npm みたいなディレクトリが出てくる。
そこにエクスプローラーでアクセスしてみると、node_modulesっていうディレクトリがある。
どうやらここがグローバルオブジェクトのインストール先らしい。
因みにC:\Users\ユーザー名\AppData\Roamingまでは、%AppData%という環境変数が切られている。
node.jsをインストールしただけでは、ここにパスが通っていない。
解決する
-
環境変数に追加してパスを通す。
変数名 変数値 NODE_PATH %AppData%\npm\node_modules -
コマンドプロンプトが起動しているなら、一度落として、再度開きなおしてから実行コマンドを実行する。
node app.js
結論
教本では、環境変数を知らない人にこれを説明するのが面倒だったんだろうなぁ~。