NodejsはWindowsにインストールされたモジュールを見つけることができません


240

現在、Windowsでnodejsを学習しています。npm.cmdを使用していくつかのモジュールがグローバルにインストールされ、nodejsはインストールされたモジュールを見つけることができませんでした。ヒスイを例にとると、

npm install jade -g

Jadeはdirectory "C:\Program Files (x86)\nodejs\node_modules"にインストールされていますが、次のコードは"Cannot find module 'jade'"エラーで失敗します。

var jade = require('jade');

ただし、jadeがローカルにインストールされている場合(npmで-gオプションを使用しない場合)、コードは正常に実行されます。ローカルにインストールされたモジュールを使用したくないので、ディスクスペースを浪費します。グローバルにインストールされたモジュールをWindowsで機能させるにはどうすればよいですか?



3
@AmolMKulkarni:それがここでどのように関連しているかはわかりません。「.js」をrequireに追加しても、Windowsでの問題は解決しません。
Dan Dascalescu 2014

1
@DanDascalescu:私はあなたが答えを誤解したと思います。その答えで与えられたコードはNode.jsのコードであり、必要なパッケージの検索方法を示しています。したがって、ファイルがどこでどのように検索されるかを理解していれば、問題をより簡単に解決できます。
Amol M Kulkarni 2014


stackoverflow.com/questions/5817874/…によれば、npm install forever -g
Sharif Yazdian

回答:


349

環境変数を追加NODE_PATHし、それを設定%USERPROFILE%\Application Data\npm\node_modulesする(Windows XP)、%AppData%\npm\node_modulesWindowsの味にモジュールをインストールするまで(Windowsの7/8/10)、またはどこNPMを終了します。これを一度に行うには、これをシステム変数として[システムのプロパティ]ダイアログ([実行] 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_PATHNodeアプリにモジュールをインポートする場合にのみ使用されることは言及する価値があります。グローバルにインストールされたモジュールのバイナリをCLIで使用する場合は、それもに追加する必要がありますがPATHnode_modules一部は追加しません(%AppData%\npmWindows 7/8/10など)。


昔話

私は自分自身がnode.jsにかなり慣れているので、完全に正しくなるわけではありませんが、私の経験からは次のように機能します。

  1. -gはグローバルライブラリをインストールする方法ではなく、システムパスに配置する方法にすぎないため、フルパスを記述せずにコマンドラインから呼び出すことができます。それが有用である、例えば、そのノードのアプリケーションは次のように、ローカルファイルを変換しているより少ない -あなたはグローバルにインストールする場合は、任意のディレクトリにそれを使用することができます。
  2. node.js自体はnpmグローバルディレクトリを調べませんでした。別のアルゴリズムを使用して必要なファイルを検索しています:http : //nodejs.org/api/modules.html#modules_file_modules(基本的に、パス内のすべてのフォルダーをスキャンして開始現在のnode_modulesフォルダーからチェックします)。

詳細については、同様の質問を参照してください:npmを使用してグローバルにモジュールをインストールするにはどうすればよいですか?


17
おかげで、あなたが提供したリンクは非常に役に立ちました。モジュール検索アルゴリズムは少し複雑に見えますが、私は今よりはっきりしています。最後に、環境変数NODE_PATHを使用してグローバルモジュールパスを参照し、set NODE_PATH=C:\Documents and Settings\DevUser\Application Data\npm\node_modules期待どおりに機能します。グローバルにインストールされたモジュールがWindowsの '%USERPROFILE%\ Application Data \ npm \ node_modules'に配置されているのは奇妙ですが、NODE_PATHに引用符を含めることはできません。
コスモア2012年

2
お役に立ててうれしいです。NODE_PATHを変更すると、FSのような標準のnode.jsモジュールへのパスが壊れませんでしたか?
Alexey Ivanov

2
私がC:\Program Files\nodejs\node_modules\npm\node_modulesインストールしたばかりのモジュールがなぜないのかと思っていましたが、npm install -g expressそれが利用可能でしたC:\Documents and Settings\swapnil\Application Data\npm\node_modules
Swapnil Mhaske 14

1
Windows 8でのパスは%USERPROFILE%\AppData\Roaming\npm\node_modules
2015年

9
グローバルnode_modulesディレクトリーがどこにあるかを知りたい場合は、コマンドを実行しnpm list -gます。出力の最初の行は、グローバルnode_modulesディレクトリの親になり{output}\node_modulesます。つまり、グローバルnode_modulesディレクトリはです。また、実行時にインストールディレクトリを出力しますnpm install --global {xyz}
カウリネーター

34

もしあなたがwindows7プラットフォームにいるなら、多分あなたはこのようにNODE_PATHを変更するべきです: %AppData%\npm\node_modules


7
それは中ですローミング\ APPDATA Windows 8のaswellに
JonnyRaa

6
npm 2.5.1がインストールされたWindows 8.1を使用していますが、NODE_PATHがドキュメントどおりに設定されていますが、インストールされているパッケージが見つかりません。考え?
JaKXz 2015

5
Windows 10では%AppData%\ npm
gkiely

私の場合(W10)は%AppData%\ Roaming \ npm
Hinrich

32

私はゾンビを目覚めさせることができますが、これはまだ問題だと思います。Windows7のノードモジュールへのグローバルアクセスが必要な場合は、これをグローバル変数パスに追加する必要があります。

C:\Users\{USER}\AppData\Roaming\npm

重要:このnode_modules部分がない場合のみ、これを見るのに30分かかりました。


4
または、Windows 8ユーザーの場合、%USERPROFILE%\ AppData \ Roaming \ npm
Benson

4
node_modulesパーツの取り外しに関するアドバイスをありがとう、これにも苦労していました!
danguilherme 16

20

Windows 10で機能させるために、フォルダー%USERPROFILE%\AppData\Roaming\npmをPATHに追加して解決しました。た\node_modules、このように追加:%USERPROFILE%\AppData\Roaming\npm\node_modules\私のために動作しませんでした。


7
または、もっと簡単に言えば、 `%AppData%\ npm`
Dan Diplo

男はそれが働いたのは奇妙です!文字通り、私はこの問題を2日間探していました。これは私が試した中で最もあいまいなソリューションであり、最初に機能したものです。どうもありがとうございます。
ウィル

はい、path環境変数に追加するだけで、Windows 10で直接実行できます
Zhu Xiaohu

1
それは実際にこれを実行する方法を、「ただ追加する...」などのことを言う代わりに、例で示します
Gabe Hiemstra

14

このノードのブログ投稿から引用します...

一般的に、経験則は次のとおりです。

  • プログラムで使用するものをインストールする場合は、require( 'whatever')を使用して、プロジェクトのルートでローカルにインストールします。
  • シェルで使用したいものをコマンドラインなどでインストールする場合は、グローバルにインストールして、バイナリがPATH環境変数に含まれるようにします。

...

もちろん、両方を実行したい場合もあります。Coffee-scriptとExpressはどちらも、コマンドラインインターフェースとライブラリを備えたアプリの良い例です。このような場合、次のいずれかを実行できます。

  1. 両方の場所にインストールします。真剣に、あなたはディスク容量が不足していますか?本当に大丈夫です。それらは小さなJavaScriptプログラムです。
  2. グローバルにインストールしてから、npm link coffee-scriptまたはnpm link express(シンボリックリンクをサポートするプラットフォームを使用している場合)。その後、グローバルコピーを更新するだけで、すべてのシンボリックリンクを更新できます。

10
They’re tiny JavaScript programs.これらのライブラリのいくつかは確かに小さくありません!
UpTheCreek

1
@UpTheCreek彼はディスク容量の範囲でサイズを参照していたと確信しています。それらはテキストファイルです。彼らは客観的に小さいです。
フィリップコプリー2016

12

短くするにnpm link jadeは、アプリディレクトリで使用します。


4
それはそうですnpm link jade:できない、次のようにWindows上での作業は、NPMはエラーメッセージを返しますnpm ERR! Error: npm link not supported on windows
Cosmore

1
現在、バージョンv0.8.9の場合
Gianfranco P.

@beyonddoor:npm link管理者コマンドウィンドウから実行する必要があります。
Mrchief 2013

12

環境変数を追加/編集して、それを結論付けようとしました:

  1. (下部のUser variables)の代わりにSystem variables(上部のボックスの)編集/追加。それ以外の場合は、「管理者として実行」して機能させる必要があります。
  2. 追加;%AppData%\npmPathサポートされている場合のように、(コマンドラインツールとしてそれを使用するためにjshintgrunt-cli)。
  3. プロジェクトディレクトリにインストールせずにスクリプトで作成するために、作成NODE_PATHして設定します。(ただし、Vista以降などのOSで作業している場合、この要件が推奨されます。)%AppData%\npm\node_modulesrequire('<pkg_name>')npm linkmklink

テスト環境:

  • Win 7(Ent。、64ビット、SP1)、Node.js 4.2.4、npm 2.14.12
  • Win 8.1(Ent。、64ビット)、Node.js 0.10.30、npm 1.4.21

9

グローバルモジュールを機能させるのに大変な時間を費やしました。最終的に、私は明示的に追加しましたC:\Users\yourusername\AppData\Roaming\npmシステム変数の下のPATH変数しました。この変数をリストのnodejsパス変数の前に置く必要もあります。

Windows 10を実行しています。


これは私のために働いた唯一のものです。Windows 8で実行
チャーリーカーバー2017年

1
これも私のために働いた唯一のものです、ありがとう!
devqon

6

実行中のWindows 7でこの問題に遭遇しました

npm install -g gulp

通常のユーザーとしてログオンしている間、管理者として。

解決策:通常のユーザーと同じインストールを実行する場合(cmdの「管理者として実行」ではない)はすべて問題ありませんでした。私はそれがデフォルトのインストールと検索パスに関連していると思います。


1
この点をもう少し明確にするには...ノードが管理者としてインストールされると、システムパスが更新され、管理者のグローバルノードモジュールフォルダーへの参照が含まれます。新しいユーザーが何かをグローバルにインストールすると、別のノードモジュールフォルダーにインストールされます。Nodeをインストールしたユーザー以外の各ユーザーは、グローバルノードモジュールフォルダーを含めるようにパスを更新する必要があります。同じアカウントでノードをインストールして使用する場合、これは必要ありません。
dpsthree 2015年

nodejs v6.9.4がインストールされたWindows 8.1 pro、パスを設定するには、C:\ Program Files \ nodejs \ nodevars.bat
Robot70

4

win8.1での経験から、npmはモジュールをインストールしますが C:\Users\[UserName]\AppData\Roaming\npm\node_modules 、dumplyでそれらを検索します C:\Users\[UserName]\node_modules

完全パスによるアプリケーション内の1つの単純なソリューション参照モジュール:

var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify");

4

Windowsの場合、nodejsモジュールとnpmモジュールの環境変数を設定する必要があると誰もが言いましたが、理由はわかりますか?一部のモジュールには、コマンドラインツールがあり、モジュールをインストールすると、C:\ Program Files \ nodejs[module] .cmdファイルがあり、ウィンドウコマンドでの起動に使用されます。したがって、cmdファイルを含むパスを環境変数%PATH%に追加しないと、コマンドウィンドウからそれらを正常に起動できません。


2

同じ問題があり、bowerをインストールしようとしました npm install -g bower

これは、ノードが別のユーザーによってインストールされたためだと思います私ではなくます。

ノードをアンインストールしてから再インストールしました。インストール中に、[ パスに追加 ] > [npmモジュール ]オプションのこのテキストを見ました

ノードインストールのメッセージ

ここに画像の説明を入力してください

ノードのインストール後、実行しました npm install -g bower再度しました。そして今、亭は機能します。

もちろん、私のように自分のユーザーでノードを再インストールする必要はありません。ソリューションはNODE_PATHまたはPATHを経由する必要があります他のユーザーが説明したように、変数。

これは、この問題が発生するのは、ノードが別のユーザーによってインストールされた場合のみです(または、インストール中に[ パスに追加 ] > [npmモジュール ]オプションがマークされていない場合)。




1

Windows 10を搭載した新しいコンピューターでVisual Studio 2015でNode.jsを使用したいので、この質問に遭遇しました。Windows7および8と8.1でNode.jsを使用しました。シリアルおよびRFXCOMモジュールのためにこのバージョンを使用する必要があるため、レガシーnode.js 0.10.39を使用しています。

Windows 10の答えは、C:\ Users \ User \ node_modulesで環境変数にNODE_PATHを設定することです。


1
ええ、違います。で(ここではWindowsの10は...)私はいくつかのモジュールを参照してくださいC:\Users\User\node_modules に私はいくつかのモジュールを参照してくださいC:\Users\User\AppData\Roaming\npm\node_modules 、私はいくつかのモジュールでご覧C:\Users\User\node_modules に位置もC:\Program Files (x86)\nodejs\node_modules\npm\node_modules わからないこの問題が発生したかを。どっちがどっち?どっちがそんな風にやったんだ?
zipzit 2016

1

Windows 10の場合、次のフォルダーにgulpをローカルにインストールする必要がありました。

C:\ Users \ myaccount \ AppData \ Roaming \ npm \ node_modules

npm install gulp

これにより、「gulpが認識されない」という私の問題が修正されました


0

だけをダウンロードしてからノードを再インストールし、このとこれは、すべてのパスの問題を修正します。

コマンドプロンプトまたはターミナルを再起動することを忘れないでください。


0

上記の答えはすべて私にとってはうまくいきませんでした。最終的に働いていた唯一のものは、環境パス変数に%APPDATA%\ NPMを追加した Cで2つのngのファイルを削除する:\プログラムファイル\ nodejs。

ngパッケージはC:\ Program Files \ nodejs \ node_modulesにインストールされなかったため、nodejsディレクトリからngバイナリを使用しても機能しないことが明らかでした。

このディレクトリで検索した理由はわかりません。既に設定済みです-PATH環境変数-C:\ Users \ MyUserの.npmrc-システム変数またはNODE_PATHを追加しようとしました


-4

Windowsを使用している場合は、いくつかの手順を実行します。1)package.jsonというファイルを作成します。

 {
  "name": "hello"
, "version": "0.0.1"
, "dependencies": {
    "express": "*"
  }
}

ここで、helloはパッケージの名前、*は依存関係の最新バージョンを意味します

2)プロジェクトディレクトリにコードを記述し、次のコマンドを実行します

npmインストール

依存関係をインストールします


4
これはそれをグローバルにインストールしません(これは質問です)。これにより、依存関係がアプリに
取り込ま

上記のすべてを試してみて、node.jsインストールをグローバルにインストールされたモジュールを認識するように説得しましたが、どれも機能しません。ノード(v8.11.3 LTS)をアンインストールして再インストールした後でも、node.jsスクリプトでrequire( "mongodb")コマンドを発行しようとするたびに、「モジュールmongodbが見つかりません」という同じエラーが発生します。それでも、コマンド「npm ll -g mongodb」を発行すると、NPMはモジュールがインストールされていることを通知します。誰かがこの問題で機能することを確認してください。
デビッドエドワーズ

更新:上記のSauliusは、実際に機能する回避策を提供しました。つまり、JavaScriptのrequireステートメントでモジュールへのフルパスを指定します。しかし、インストールされたモジュールの間違ったフォルダーでのnode.jsの検索に関する彼の述べた観察が正しい場合、誰かがnode.js開発者にこれを警告できますか?問題はまだv8.11.3 LTSに影響を与えているためです。
デビッドエドワーズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.