[解決済み】WindowsでNodejsがインストールされたモジュールを見つけることができません。
質問
現在、Windowsでnodejsを学習しています。いくつかのモジュールはnpm.cmdでグローバルにインストールされていますが、nodejsはインストールされたモジュールを見つけることに失敗しました。たとえば、jadeです。
npm install jade -g
Jadeは、以下のディレクトリにインストールされます。
"C:\Program Files (x86)\nodejs\node_modules"
が、以下のコードでは
"Cannot find module 'jade'"
のエラーが発生します。
var jade = require('jade');
しかし、jadeがローカルにインストールされている場合(npmの-gオプションなし)には、コードは正常に実行されます。私はローカルにインストールされたモジュールを使いたくありません、それは私にとってディスクスペースの浪費です。どうすれば、グローバルにインストールされたモジュールをWindowsで動作させることができるのでしょうか?
解決方法は?
という環境変数を追加します。
NODE_PATH
に設定し、それを
%USERPROFILE%\Application Data\npm\node_modules
(Windows XP)の場合。
%AppData%\npm\node_modules
(Windows 7/8/10)、またはあなたのWindowsフレーバーでnpmがモジュールをインストールすることになる場所です。これを最後に行うには、システムのプロパティダイアログの詳細設定タブで、システム変数としてこれを追加します (run
control.exe sysdm.cpl,System,3
).
Windows 7+ での迅速な解決策は、ただ実行することです。
rem for future
setx NODE_PATH %AppData%\npm\node_modules
rem for current session
set NODE_PATH=%AppData%\npm\node_modules
特筆すべきは
NODE_PATH
はNodeアプリでモジュールをインポートするときのみ使用されます。グローバルにインストールされたモジュールのバイナリを CLI で使用したい場合は、このバイナリも
PATH
ただし
node_modules
の部分(例えば
%AppData%\npm
Windows 7/8/10 の場合)。
昔話
私はnode.jsの初心者なので、完全に正しくないかもしれませんが、私の経験では、このように動作します。
- -g は、グローバルなライブラリをインストールする方法ではなく、システムパス上に配置することで、フルパスを記述せずにコマンドラインから呼び出すことができるようにするための方法です。例えば、nodeアプリが以下のようなローカルファイルを変換している場合に便利です。 以下 - をグローバルにインストールすれば、どのディレクトリでも使えるようになります。
- node.js自体はnpmのグローバルディレクトリを見ず、別のアルゴリズムで必要なファイルを探しています。 http://nodejs.org/api/modules.html#modules_file_modules (基本的に、パス内のすべてのフォルダーをスキャンし、現在の ノードモジュール フォルダをチェックします)。
詳しくは類似の質問を参照してください。 npmを使用してモジュールをグローバルにインストールするにはどうすればよいですか?
関連
-
[解決済み] XAMPP Object not foundエラー
-
[解決済み] Windows用の堅牢で最小限のインストーラーを作成するには?[クローズド]
-
[解決済み] Windowsにpipをインストールするにはどうしたらいいですか?
-
[解決済み] インストールされているnpmパッケージのバージョンを検索する
-
[解決済み] Windowsのコマンドラインに'which'に相当するものはありますか?
-
[解決済み] ローカルにインストールされたPythonモジュールの一覧を取得するにはどうしたらいいですか?
-
[解決済み] npmのユーザーインストール済みパッケージの一覧を表示する方法は?
-
[解決済み] Node.jsで "Cannot find module "エラーを解決するにはどうしたらいいですか?
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
-
[解決済み] 与えられたnpmモジュールの依存関係ツリーを表示する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み] Npm このコマンドを root/administrator で再使用してください。
-
[解決済み] xcopyがAccess Deniedと表示される原因は何ですか?
-
[解決済み] .batファイルのアイコンをプログラムで変更するには?
-
[解決済み] ポート8005はWindows 10のシステムプロセスで使用されます。
-
[解決済み] Windowsの能書きは?
-
[解決済み] Windowsアラート:不正なピンが何度も入力されています。
-
[解決済み] Windowsからリモートサーバーへscpでローカルファイルをコピーする [終了しました]。
-
[解決済み】npmを使用してモジュールをグローバルにインストールするにはどうすればよいですか?
-
[解決済み】NPMグローバルインストール "cannot find module"