私はnpmを通していくつかのパッケージをダウンロードする必要がありますが、私たちの企業のプロキシ設定は.pacファイルです(私はウィンドウズにいます)。
私はすでに試しました
npm config set proxy http://mydomain\username:[email protected]:8181/proxy.pac
npm config set https-proxy http://mydomain\username:[email protected]:8181/proxy.pac
または
npm config set proxy http://1.2.3.4:8181/proxy.pac
npm config set https-proxy http://1.2.3.4:8181/proxy.pac
しかし、うまくいきません….
なにか提案を?ありがとう
私はプロキシサーバーの後ろでnpmを動かすことができないという非常によく似た問題を抱えています。
私のユーザー名は "domain\username"の形式です - プロキシ設定にスラッシュを含めるとスラッシュが表示されました。だからこれを入力:
npm config set proxy "http://domain\username:password@servername:port/"
その後、このnpm config get proxy
を実行するとこれが返されます。 http://ドメイン/ユーザー名:パスワード@サーバー名:ポート/
したがって、問題を解決するために、代わりに円記号をURLエンコードしたので、次のように入力しました。
npm config set proxy "http://domain%5Cusername:password@servername:port/"
これでプロキシアクセスが修正されました。
Internet ExplorerのLAN設定でpac
ファイルのURLを探し、構成されているURLからpacファイルをダウンロードします。 pacファイルは、さまざまなシナリオでさまざまなプロキシホストを返す、FindProxyForURL
という名前の関数を持つ単なるJavaScriptファイルです。
そのpacファイルで一般的なWebトラフィック用のホストを見つけ、それをC:\Users\<username>\.npmrc
内の.npmrcに接続します。
proxy=http://<username>:<pass>@proxyhost:<port>
https-proxy=http://<uname>:<pass>@proxyhost:<port>
あなたの会社のマシンにあなたのドメインとユーザー名でログインしても、 ユーザーのActive Directoryドメイン名はプロキシに必要ではない可能性が高いです 、ユーザー名とパスワードだけがあなたのActiveと異なるかもしれません。ディレクトリログイン)
特別なパスワード文字をエスケープすることを忘れないでください。
.pac
ファイルをダウンロードしてください。任意のエディタでそれを開き、PROXY = "PROXY X.X.X.X:80;
を探します。あなたはたくさんのプロキシを持っているかもしれません、それらのどれでもコピーして、そして以下の端末コマンドを実行してください:
npm config set proxy http://X.X.X.X:80
npm config set https-proxy http://X.X.X.X:80
これでどんなパッケージでもインストールできるはずです。
私はこの問題をこのように解決しました:
1)このコマンドを実行します。
npm config set strict-ssl false
2)次に、httpsではなくhttpで実行するようにnpmを設定します。
npm config set registry "http://registry.npmjs.org/"
3)それからあなたのパッケージをインストールしてください
npm install <package name>
@Steve Robertsの回答を拡大してください。
私のユーザー名は "domain\username"の形式です - プロキシ設定にスラッシュを含めるとスラッシュが表示されました。だからこれを入力:
npm config set proxy "http://domain\username:password@servername:port/"
domain\user
文字列をURLエンコードする必要もありましたが、ユーザー名の内側にスペースがあるので、スペースURLエンコードをエンコードするために+
を配置しましたが、%2B
(プラス記号のURLエンコード)としてダブルエンコードされます。ただし、スペースのURLエンコードは%20
)なので、代わりに次の手順を実行する必要がありました。
//option one
//it works for some packages
npm config set http_proxy "http://DOMAIN%5Cuser+name:[email protected]:port"
npm config set proxy "http://DOMAIN%5Cuser+name:[email protected]:port"
//option two
//it works best for me
//please notice that I actually used a space
//instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://DOMAIN%5Cuser name:[email protected]:port"
npm config set proxy "http://DOMAIN%5Cuser name:[email protected]:port"
npm config list
を使用して、上記で設定した解析済みの値を取得しました。これが、ダブルエンコーディングについて発見した方法です。変です。
よろしく。
上記の設定でも、 リクエスト - 簡易HTTPクライアント を内部的にダウンロードするためのいくつかのパッケージ/スクリプトで、まだいくつか問題がありました。そのため、上記のreadmeで説明したように、コマンドラインでプロキシを設定するために 環境変数 を指定できます。Requestはそれらの値を優先します。
その後、環境変数を設定しようとした後、(これを認めることを躊躇しています)数回の試行の後、私はついに次のガイドラインに成功しました。
rem notice that the value after the = has no quotations
rem - I believe that if quotations are placed after it, they become
rem part of the value, you do not want that
rem notice that there is no space before or after the = sign
rem - if you leave a space before it, you will be declaring a variable
rem name that includes such space, you do not want to do that
rem - if you leave a space after it, you will be including the space
rem as part of the value, you do not want that either
rem looks like there is no need to URL encode stuff in there
SET HTTP_PROXY=http://DOMAIN\user name:[email protected]:port
SET HTTPS_PROXY=http://DOMAIN\user name:[email protected]:port
プロキシの設定が必要なすべてのツールでパスワードを更新することによるオーバーヘッドに気付くまで、私は数週間上記の手法を使用しました。
Npmのほかに、私も使用します:
そこで、 cntlm をインストールしました。 cntlm
を設定するのはかなり前向きです、あなたはiniファイルを探します@ C:\Program Files\Cntlm\cntlm.ini
C:\Program Files\Cntlm\cntlm.ini
を開きます(管理者権限が必要な場合があります)Username
とDomain
の行を探します(8-9行目と思います)Cmdプロンプトで実行:
cd C:\Program Files\Cntlm\ cntlm -M cntlm -H
cygwin warning: MS-DOS style path detected: C:\Program Files\Cntlm\cntlm.ini Preferred POSIX equivalent is: /Cntlm/cntlm.ini CYGWIN environment variable option "nodosfilewarning" turns off this warning. Consult the user's guide for more details about POSIX paths: http://cygwin.com/cygwin-ug-net/using.html#using-pathnames Password:
cntlm -H
から得られる出力は次のようになります。
PassLM 561DF6AF15D5A5ADG PassNT A1D651A5F15DFA5AD PassNTLMv2 A1D65F1A65D1ASD51 # Only for user 'user name', domain 'DOMAIN'
PassLM
とPassNT
の前に#
を追加するか、または使用しないでください。cntlm -H
からの出力をPassLM
、PassNT
、およびPassNTMLv2
の行に置き換えて貼り付けるか、元の行をコメントアウトして自分の行を追加します。Proxy
サーバーを追加してください。あなたがプロキシサーバが何であるかわからないなら...私がしたことをしなさい、私はHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
の中のAutoConfigURL
レジストリキーを探すことによって私のプロキシ自動設定ファイルを探しました。そのURLに移動して、JavaScriptであることが起こるコードを調べます。Listen ####
行を変更することでcntlmが待機するポートを変更できます。ここで、####
はポート番号です。それで、あなたはあなたのcntmlプロキシをnpmに向け、あなたはipを使うことができます、私はlocalhost
とcntlmのためのデフォルトポート3128
を使ったので私のプロキシURLはこのように見えます
http://localhost:3128
適切なコマンドで:
npm config setプロキシ http:// localhost:3128
もっと簡単です。あなたはその同じURLを使ってあなたのすべてのツールをセットアップし、あなたは一箇所でパスワードを更新するだけです。人生はそれほど単純ではありません。
Npmのドキュメントから ca
あなたの会社のプロキシがそれ自身の自己署名証明書でhttps接続を傍受しているなら、これは避けるために絶対必要です (大、無).npm config set strict-ssl false
基本ステップ
\n
に置き換えます.npmrc
を編集してca[]="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
という行を追加してください私は時々npm種類のハングアップに気づいたので、私は(時々強制的に) cntlm を止めてそれを再起動します。
私はこれに関していくつかの問題に遭遇しました、そして最後に私がしたことは以下の通りです:
フィドラーカスタムルールでは、私は追加しました
if (m_AutoAuth) {oSession["X-AutoAuth"] = "domain\\username:password";}
最後にnpmで私は http:// localhost:8888にプロキシを設定しました
これはうまくいきました。
NPMが認証エラーを出している場合は、Fiddlerを確認できます。インストールと設定は簡単です。 FiddlerルールをAutomatically Authenticatedに設定します。In.npmrcでこれらのプロパティを設定します
registry=http://registry.npmjs.org
proxy=http://127.0.0.1:8888
https-proxy=http://127.0.0.1:8888
http-proxy=http://127.0.0.1:8888
strict-ssl=false
それは私のために働きました:)
社内ファイアウォールの背後で苦労している人や、SSLに関する問題(ローカル発行者証明書を取得できない)については、以下の手順を試すことができます。
あなたがSSLについて心配していないなら、あなたはあなたのプロキシを設定し、安全でないバージョンにレジストリを変更することによって多くの以前の貢献者のアドバイスに従うことができます:
npm config set proxy http://username:password@proxyname:port
npm config set https-proxy http://username:password@proxyname:port
npm config set registry http://registry.npmjs.org/
ここでの簡単な説明、セキュリティで保護された要求と保護されていない要求で私のプロキシ資格情報は同じです(https-proxy設定では、プロトコルをhttp://のままにします。 )これはあなたにとっても同じかもしれませんし、そうでないかもしれません。
SSLを維持したいが、strict-ssl=false
を使用したくない場合は、さらに作業が必要です。私にとっては、私は企業のファイアウォールの内側にいて、自己署名証明書を使用しているので、エラーunable to get local issuer certificate
を受け取ります。あなたが私と同じボートにいるのなら、npm設定ファイルでcafile=
オプションを設定する必要があります。まず、自己署名証明書に関する情報を保持しているPEMファイルを作成する必要があります。その方法がわからない場合は、サードパーティ製ソフトウェアを使用せずにWindows環境を使用する方法があります。
自己署名証明書を使用しているため、どの証明書を信頼するかを明示的に示す必要があります。私の例では、Chromeを使用してwww.google.comにアクセスしたので、証明書を取得できます。
Chromeで、[検査] - > [セキュリティ] - > [証明書の表示]の順に選択します。 SSL接続を許可するすべての証明書が表示されます。これらの証明書が自己署名されていることに注意してください。ぼやけている部分は私の会社です、そして私たちは認証局ではありません。完全な証明書パスをP7Bファイルとしてエクスポートすることも、証明書を個別にCERファイルとしてエクスポートすることもできます(base64エンコード)。フルパスをP7Bとしてエクスポートしてもあまり効果がありません。証明書マネージャでこのファイルを開き、個別のCERファイルとしてエクスポートする必要があるためです。 Windowsでは、P7BファイルをダブルクリックするとCertificate Managerアプリケーションが開きます。
CER(Base 64)としてエクスポートするのは、実際には次の形式のテキストファイルです。
-----BEGIN CERTIFICATE-----
MIIGqzCCBZOgAwIBAgITIwAAABWhFPjwukYhTAADAAAAFTANBgkqhkiG9w0BAQUF
ADBFMRMwEQYKCZImiZPyLGQBGRYDY29tMRYwFAYKCZImiZPyLGQBGRYGaXJ2aW5n
b0pvCkNmjWzaNNUg2hYET+pP5nP75aRu+kPRl9UnlQ....rest of certificate...
-----END CERTIFICATE-----
PEMファイルを作成するには、これらの証明書を1つのファイルに積み重ね、拡張子を.pemに変更するだけです。私はこれをするためにメモ帳を使いました。
証明書パスとは逆の順序で証明書をスタックします。そのため、上では* .google.comから始め、その下にWebsenseを貼り付けてから、Issuing CA 1などとします。このようにして、証明書が上から下に解析され、適切なルートCAが検索されます。ルートCAを含めるだけではうまくいきませんが、すべての証明書を含める必要はありません。上記のパスから、Websense証明書(Issuing CA 1、Policy CA、Root CA)の前にある証明書だけを含める必要があります。
これらの自己署名証明書をPEMファイルに保存したら、これらの証明書を信頼できるCAとして使用するようにnpmに指示する準備が整いました。設定ファイルを設定するだけで、うまくいくはずです。
npm config set cafile "C:\yourcerts.pem"
これで、プロキシを(httpとhttps)に設定し、レジストリをhttps://registry.npmjs.org
に設定すると、strict-ssl
設定を無効にすることなく、自己署名証明書を使って企業のファイアウォールの内側にパッケージをインストールできるはずです。
これを試して、次のようにnpmにプロキシを設定してください。
npm config set proxy "http://<user-name>:<password>@<proxy-url>:<port>"
npm config set https-proxy "http://<user-name>:<password>@<proxy-url>:<port>"
npm config set strict-ssl false
npm config set registry "http://registry.npmjs.org/"
Cmd、GIT Bash、またはその他のプロンプトで、下記のコマンドを使用してください。
$ npm config set proxy "http://192.168.1.101:4128"
$ npm config set https-proxy "http://192.168.1.101:4128"
192.168.1.101はプロキシIP、4128はポートです。プロキシ設定に従って変更してください。
プロキシを使用して企業ネットワークの内側にいる場合は、ntlmプロキシツールを使用し、ntlmが提供するポートとプロキシを使用しました。たとえば、次の設定を使用しました。
strict-ssl=false
proxy=http://localhost:3125
これが役に立つことを願っています。
サーバーの管理者またはサポートからプロキシのホストとポートを取得します。
設定後
npm config set http_proxy http://username:[email protected]:itsport
npm config set proxy http://username:[email protected]:itsport
パスワードに特殊文字がある場合は、%urlencodeを試してください。例: - ポンド(ハッシュ)は、%23に置き換えてください。
これは私のために働きました...
あなたは "npm config set http-proxy "を使わなければなりません。
つかいます:
npm config set http-proxy http://1.2.3.4:8181
npm config set https-proxy http://1.2.3.4:8181
これを試してください、それは私のために働いた唯一のものでした:
npm - プロキシhttp://:@プロキシホスト:--https-proxy http://:@プロキシホスト:--strict-ssl falseインストール-gパッケージ
--strict-ssl falseオプションに注意を払う
がんばろう。
#Without password
proxy=http://ipaddress:80
https-proxy=http://ipaddress:80
#With password
proxy=http://<username>:<pass>@proxyhost:<port>
https-proxy=http://<uname>:<pass>@proxyhost:<port>
#proxy=http://ipaddress:80
#https-proxy=http://ipaddress:80
#With password
#proxy=http://<username>:<pass>@proxyhost:<port>
#https-proxy=http://<uname>:<pass>@proxyhost:<port>
受け入れられた答えで言及されたNPMプロキシセットアップは問題を解決します、しかしあなたがthis npm issueで見ることができるように、いくつかの依存関係はGITを使いますgitプロキシの設定が必要、そして次のようにすることができます。
git config --global http.proxy http://username:password@Host:port
git config --global https.proxy http://username:password@Host:port
NPMプロキシの設定は、次のとおりです。
npm config set proxy "http://username:password@Host:port"
npm config set https-proxy "http://username:password@Host:port"
npm config set strict-ssl false
npm config set registry "http://registry.npmjs.org/"
職場でのプロキシ設定の設定と自宅でのそれらの設定をオフにすることにまだ問題があるので、 npm-corpo-proxy.sh とスクリプトを書いて公開しました。どの企業でも、パスワードは頻繁に変更する必要があり、npm configを入力する前にエンコードする必要があります(backash形式のdomain\userも同じ)。
CNTLMと連携させることができませんでした。上記に掲載されているすべての情報に従ってみましたが、プロキシはまだ接続を承認しませんでした。 Fiddlerでは、インストールして「Automatically Authenticated」オプションをチェックするだけで済みます。しかし動作させるために、私は自分のユーザフォルダから.npmrcファイルを削除し、そして ここに示されたように環境変数を設定しなければなりません 、これらの値で:
set npm_config_https-proxy="http://127.0.0.1:8888"
set npm_config_registry="http://registry.npmjs.org/"
私は同様の問題に遭遇し、私のnpm設定ファイル(.npmrc)が間違ったレジストリエントリを持っていることを知りました。コメントアウトして、npm installを再実行しました。出来た。
.typingsrcファイルに以下の行を追加すると私は役に立ちました。
{
"rejectUnauthorized": false,
"registryURL" :"http://api.typings.org/"
}
私は同じような問題を抱えていました、そして私は上記のすべての回避策を試しましたが、どれも私のために働きませんでした(私は私のパスワードに特殊文字を使っていました。
それとは別に、私は自分のパスワードをプレーンテキストとして追加することに少し不安を感じました。これらすべての課題を克服する最も簡単な解決策は、ある種のリバースプロキシ(Fiddlerなど)を使用することでした。
私はすでに this SOで設定手順を詳しく述べました。
グーグルでの小さな検索から私が最初に試したのはこれでした
npm config set registry http://registry.npmjs.org/
npm config set proxy "your proxy"
npm config set https-proxy "your proxy"
しかし、それでもnpmは、 "npm install"を実行しようとすると接続が切断されたようです。それから私はコマンドプロンプトでこの行を走らせましたそして今私はnpm installを使うことができます
set NODE_TLS_REJECT_UNAUTHORIZED=0
OS: Windows 7
私のために働いたステップ:
npm config get proxy
npm config get https-proxy
コメント:私は自分のプロキシ設定を知るためにこのコマンドを実行しましたnpm config rm proxy
npm config rm https-proxy
npm config set registry=http://registry.npmjs.org/
npm install