Cli: [質問] `npminstall`のタイムアウトを定義する方法はありますか

作成日 2020年04月14日  ·  11コメント  ·  ソース: npm/cli

何/なぜ

今のところ、パッケージに問題があります。メタ情報ファイル(すべてのバージョンがリストされています)の重みが110Mbを超え、ファイルをマシンにダウンロードするのに2.5分かかります。私たちのチームでは、迷惑なnpmインストールが失敗する原因になります。

Response timeout while trying to fetch http://regsitry.url/example-meta-file (over 30000ms)

どこ

今のところ、ローカル環境では、デフォルトのタイムアウトを変更するために、npmファイルを調整する必要がありました。
NPMデバッグログで、 Response timeout...メッセージが
~/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/node-fetch-npm/src/body.js:189:16
これはソースです: https

私はそれをそのようにハードコーディングしました:

    // allow timeout on slow response body
    if (this.timeout) {
      resTimeout = setTimeout(() => {
        abort = true
        reject(new FetchError(`Response timeout while trying to fetch ${this.url} (over ${this.timeout}ms)`, 'body-timeout'))
-      }, this.timeout)
+      }, 5 * 60* 1000) // 5 minutes timeout to prevent failing on huge meta files downloading
    }

WHO

該当なし

参考文献

該当なし

したがって、問題は次のとおりです。

npm installコマンドの前に渡すか定義できるパラメーター/ ENV_VARIABLEはありますか?これは、共有するコードのthis.timeout値をオーバーライドします。

Bug Needs Discussion Question Release 6.x patch

最も参考になるコメント

したがって、現在の修正はNPM 6.14.5にアップグレードすることです。

最新のNode.jsバージョン(10.x、12.x、13.x、14.x)が6.14.4ではなく6.14.5で出荷される場合に最適です。
https://nodejs.org/en/download/releases/

全てのコメント11件

また言及する価値があります:
@npm/cliまたはnode-fetch-npmコードで、 node-fetch-npm渡された「デフォルトのタイムアウト」のような30000について何も見つかりませんnode-fetch-npm

npm-registry-fetchとpacoteで使用されるmake-fetch-happenで使用されているようです。 一部の環境では、メタデータが30秒を超えるほど大きくなっているという問題が発生しています。

魔法のtimeoutオプションを構成する方法はまだないようです-https://github.com/npm/cli/blob/latest/lib/fetch-package-metadata.js#L56- L58

ここでも同じですが、ionic cligithubに投稿します
https://github.com/ionic-team/ionic-cli/issues/4387

6.13.xにダウングレードすると解決しました-https //github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff-3c78131ed196efbd3ce9fdee2df36e24R79

@darcyclarkeの場合、そのためにさらに問題が発生します。最新のNode.jsv12.16.2がデフォルトでNPMv6.14.xに同梱されていたためです。

NPM v6.14.0でnpm-registry-fetchをアップグレードすると、前述の@darrinholstのようにタイムアウトの問題が発生したようです。
https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16

NPM v6.14.xでそのnpm-registry-fetchタイムアウトを再定義する機能がないため、Node.jsバージョンはNPM v6.13.xの最後のバージョンであるため、12.16.1に固定する必要がありました。

そしてそれはバグのようです、その変更の前にhttps://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -acf38193ec0e2d9a3b9dc202f239a77aR12、巨大なメタファイルはまったく問題ではありませんでした。

@ sidoruk-svは、これを私たちの注意を引いてくれてありがとう。 これを内部で取り戻し、これを解決するパッチを出荷できるかどうか、および/またはフラグを見つけて導入できるかどうかを確認します。

プロジェクトをデプロイできません。ほとんどの場合、webpackメタファイルはタイムアウトになり、場合によってはfirebaseになります。 先週悪化しましたが、メタファイルは常に失敗しているという点に到達したようです。 6.13.7へのダウングレードを試みます。

編集:ダウングレード後、10以上が失敗した後、最初のグリーンビルドを取得しました。有望に見えます。

https://github.com/npm/npm-registry-fetch/issues/26を参照して

nrf v4(npm v6)のデフォルトのタイムアウトをゼロに戻し、最新(npm v7)で最大5mに上げ、CLIv7に--fetch-timeoutオプションを追加して、これを明示的に設定しましょう。

それが当面の問題を解決し、私たちをより良い場所に置くことができると思います。

したがって、現在の修正はNPM 6.14.5にアップグレードすることです。

最新のNode.jsバージョン(10.x、12.x、13.x、14.x)が6.14.4ではなく6.14.5で出荷される場合に最適です。
https://nodejs.org/en/download/releases/

npm configのドキュメントには、タイムアウトに関するいくつかのエントリがあります。 このコードはこれらの設定を無視していますか、それともこの特定のケースの設定がなく、それが問題ですか?

この特定のケースの設定はありませんか、それが問題ですか?

はい、オプションはv7

このページは役に立ちましたか?
0 / 5 - 0 評価