アプリケーションで基本的なnpm install
を実行すると、開発者をセットアップしようとしています。破損したパッケージの環境は、Verdaccioプロキシインスタンスからプルされます。
再現するには
動作を再現する手順:
npm set registry [[Verdaccio Server URL]]:4873
。npm install
を実行します。結果
次のような大量の出力が得られます。
npm http fetch GET 200 [[Proxy NPM Site]]/@angular%2fplatform-browser-dynamic/-/platform-browser-dynamic-5.2.11.tgz 6430ms
npm WARN tarball tarball data for @angular/[email protected] (sha512-NT8xYl7Vr3qPygisek3PlXqNROEjg48GXOEsDEc7c8lDBo3EB9Tf328fWJD0GbLtXZNhmmNNxwIe+qqPFFhFAA==) seems to be corrupted. Trying one more time.
npm WARN tarball tarball data for [email protected] (sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==) seems to be corrupted. Trying one more time.
npm WARN tarball tarball data for [email protected] (sha1-1B/UIVTAWTQiy4PEc6OCiqdSW/U=) seems to be corrupted. Trying one more time.
パッケージのURLエンコード名、この場合は@angular%2fplatform-browser-dynamic
に注意してください。プロキシをhttps://registry.npmjs.org/
に設定したときにこれを取得できません。
もちろん、私がしたいことは、あたかも公式のレジストリに接続しているかのようにnpm install
を実行できることです。
構成ファイルとログファイル
追加情報
環境:Windows Server 2012(SP2)
Verdaccioが稼働しているサーバーは、プロキシの背後にありません。
したがって、以下を実行した後、すべてが意図したとおりに機能しました。
rmdir /S /Q node_modules (or rm -rf node_modules on a *nix derivative OS)
del package-lock.json (or rm package-lock.json on a *nix derivative OS)
npm set registry [[My Verdaccio Instance's IP]]:4873
npm cache clean --force
npm install --force --verbose --no-bin-links
NPMバージョン3にロールバックすると、再び機能し始めます。 NPM @ 3でVerdaccioに公開してからNPM @> = 5でプルすると、この問題が発生しました。
Verdaccioのキャッシュをオフにする必要がありました
uplinks:
npmjs:
url: https://registry.npmjs.org/
cache: false
これは、Angular CLIではなく、node/npmの問題のようです。
使用することをお勧めします
npm clear cache --force
npm install
ありがとう。