web-dev-qa-db-ja.com

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

私は今、Windows上でnodejsを学んでいます。いくつかのモジュールがnpm.cmdでグローバルにインストールされ、nodejsはインストールされたモジュールを見つけることができませんでした。例えば翡翠を

npm install jade -g

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

var jade = require('jade');

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

222
Cosmore

NODE_PATHという名前の環境変数を追加し、それを%USERPROFILE%\Application Data\npm\node_modules(Windows XP)、%AppData%\npm\node_modules(Windows 7/8/10)、またはnpmがあなたのWindowsフレーバーにモジュールをインストールすることになるところならどこにでもそれを設定してください。これを一回でやるには、これをSystem PropertiesダイアログのAdvancedタブでSystem変数として追加します(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の部分は含まれません(たとえば、Windows 7/8/10の%AppData%\npm)。


昔の話

私はnode.js自身がかなり新しいので、完全に正しいとは言えませんが、私の経験からすると次のように動作します。

  1. - gはグローバルライブラリをインストールする方法ではなく、システムパス上に配置するための唯一の方法なので、フルパスを書き込まずにコマンドラインから呼び出すことができます。例えば、ノードアプリがlessのようにローカルファイルを変換している場合などに便利です。グローバルにインストールすれば、どのディレクトリでも使用できます。
  2. node.js自体はnpmグローバルディレクトリを見ませんでした、それは必要なファイルを見つけるために別のアルゴリズムを使っています: http://nodejs.org/api/modules.html#modules_file_modules (基本的に現在のfornode_modulesフォルダから始めてパス内のすべてのフォルダをスキャンし、それをチェックします)。

npmを使ってグローバルにモジュールをインストールするにはどうすればいいですか?

325
Alexey Ivanov

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

33
Jack

私はゾンビを起こすことができることを私は知っているが、私はあなたがあなたのグローバル変数パスにこれを追加する必要があるあなたがWindows 7のノードモジュールへのグローバルアクセスを必要とするなら

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

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

26
Vitaliy Terziev

Windows 10で動作させるために、私は自分のPATHにフォルダ%USERPROFILE%\AppData\Roaming\npmを追加して解決しました。このように\node_modulesを追加すると%USERPROFILE%\AppData\Roaming\npm\node_modules\はうまくいきませんでした。

16
Andi-lo

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

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

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

...

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

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

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

10
sntran

環境変数を追加/編集しようとしましたが、結論を出すようになりました。

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

テスト環境:

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

私は実行して、Windows 7でこの問題に遭遇しました

npm install -g gulp

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

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

5
Sebastian

私は、グローバルモジュールが機能するようになるのにひどい時間を過ごしました。結局、私はシステム変数の下のPATH変数にC:\Users\yourusername\AppData\Roaming\npmを明示的に追加しました。また、この変数をリスト内のnodejsパス変数の前に置く必要がありました。

Windows 10を実行しています。

5
John Galt

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

3
Kiki.J.Hu

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

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

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

私は同じ問題を抱えていました、npm install -g bowerでbowerをインストールしようとしました

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

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

ノード設置時のメッセージ

enter image description here

ノードのインストール後、私はnpm install -g bowerを再度実行しました。そして今、owerは働きます。

もちろん、私のように自分のユーザーでノードを再インストールする必要はありません。他のユーザーが説明したように、解決策はNODE_PATHまたはPATH変数でなければなりません。

これはnodeが他のユーザによってインストールされている場合(あるいはインストール中にPATHに追加> npm modulesオプションがマークされていない場合)にのみ発生するということを述べたものです。

2
Gregorio

私はこの問題についてつまずいた。なぜなら、私はwindows 10を持つ私の新しいコンピュータ上でvisual studio 2015でnode.jsを使いたいからである。シリアルおよびRFXCOMモジュールのためにこのバージョンを使用する必要があるため、私は従来のnode.js 0.10.39を使用します。

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

1
wetlip

Windows 10では、私はローカルにgulpをフォルダにインストールしなければなりませんでした:

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

npm install gulp

これは私の "gulpが認識されない"という問題を修正しました

1
Bizz Websites

あるいは、~/.npmrc right プレフィックス を追加することもできます。私は64 Win7用のC:\Program Files\nodejsを持っています。

1
dmi3y

上記の答えはすべて私にとってはうまくいきませんでした。最終的に機能したのは、環境パス変数に%AppData%\ npmを追加することだけでしたおよびは、C:\ Program Files\nodejsの2つのngファイルを削除しました。

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

既に環境設定されているため、なぜこのディレクトリを検索したのか分かりません-PATH環境変数-C:\ Users\MyUserの.npmrc-システム変数やNODE_PATHを追加しようとしました

0
devqon

これを this からダウンロードして再インストールするだけで、すべてのパスの問題が解決されます。

コマンドプロンプトまたは端末を再起動することを忘れないでください。

0
Mahendra