Angular Browserslist:caniuse-liteは古くなっています。次のコマンド「npm update」を実行してください


11

私が最近取り組んでいるAngular 8プロジェクト(ノードv10.16.0)でこのエラーが発生し始めました。npm update caniuse-lite browserslistを実行しても何も起こらなかった

そのため、package-lock.jsonを削除し、node_modulesを削除してnpm installを実行しましたが、browserlistファイルがなくなっています。ng buildを実行すると、同じメッセージが表示されます:Browserslist:caniuse-lite is時代遅れです。次のコマンドを実行してくださいnpm update

同じトピックに関するこの投稿を参照: Browserslist:caniuse-lite is時代遅れ。次のコマンド「npm update caniuse-lite browserslist」を実行してください。 ただし、WebCompilerとautoprefixerについて話しているので、私はそれらを知りません。ご案内ください


Q:このAngularプロジェクトはVisual Studioで作成しましたか?Q:単に指示に従って実行しただけで何が起こりましたnpm update caniuse-lite browserslistか?
FoggyDay

1
はい、AngleプロジェクトではVisual Studio 2017を使用しています。npmupdate caniuse-lite browserslistを使用しても何も起こりませんでした。何もインストールされません...
SilverFish

新しいnpmインストールを行った後にbrowserlistファイルがなくなったので(caniuse-liteがあります)、nlistをbrowserlistで実行することをお勧めしますか?
SilverFish

同じ問題が発生しました。phpstromでそれを実行するために私に語ったnpm updateが、これはただの角8.高に私のtypescriptですバージョンを作った、問題を解決していない
BlakkM9

1
エディターがこの競合を引き起こしている理由がよくわかりませんが、Visual Studioコードを使用するAngular 8でも同じ問題が発生しています。これに関する答えはまだありますか?今週は大きな新機能をリリースする予定ですが、もちろん、今はアプリがビルドされません。browserlistを使用していくつかのnode_modulesを確認します
HomeBrew

回答:


8

以下のコマンドを実行することにより、caniuse-liteの古い問題を解決しました。

npm cache clean  # optional
npm install caniuse-lite@latest --save

npm cache clean最新バージョンではnpmによって自動的に処理されるため、直接動作しません。私たちに使ってもらえます--forceか?はいの場合、キャッシュを削除する理由を説明してください。
Vishnudev

1
npm cache cleanは必須ではありません。直接実行できますnpm install caniuse-lite@latest --save
Dipten

1
(package.json bloatを介して)アプリにcaniuse-liteを追加することは、アプリの依存関係ではなく、npmツールセットのみであるため、お勧めできません。以下の詳細な説明を参照してください。また、「-save」は現在、インストールのデフォルトのアクションであるため冗長です。
jdh

これはcaniuse-liteを正常にインストールしますが、それでも同じエラーが発生します。
nullmn

ノード10.xで試してみましたが、修正されました。ノードのバージョンを確認してください。
1

2

TLDR:(説明がないと直観に反するように見えるかもしれません)

  npm install caniuse-lite browserslist
  npm uninstall caniuse-lite browserslist

説明:

インストールされているcaniuse-liteのバージョンが現在のバージョンの2バージョンより古いことが判明した場合、この警告メッセージ(「canisuse-liteは古くなっております...」)は、ビルド/起動時にbrowserslistのスクリプトによって出力されます。プロジェクトの何も変更されておらず、プロジェクトの開始時またはビルド時に突然このメッセージが表示される場合は、おそらくcaniuse-liteの最新バージョンの更新があったことを意味します。

残念ながら、browserslistが表示するテキストmsgは、プロジェクトの依存関係としてcaniuse-liteをインストールした場合にのみ役立ちます。ほとんどの場合、あなたはしませんでした。したがって、提案された 'npm update caniuse-lite'または 'npm update' caniuse-lite @ latest '(または' npm install ')を実行すると、npmはpackage.json依存関係にリストされているそのパッケージを認識しないため、無視されますリクエスト。

これらのパッケージはどのようにして依存関係になりましたか?プロジェクトが作成されたとき(おそらくアプリのangularappまたはcreate-react-appまたはフレームワークに類似したもので)、npmはbrowserslistをプロジェクトの依存関係の1つとしてではなく、必要なツールの依存関係としてインストールしました。同時に、caniuse-liteはbrowserslistの依存関係としてインストールされました。後でプロジェクトが更新されたときに、すべての依存関係を特定のバージョンにロックするpackage-lock.jsonファイルが作成されました。

package-lock.jsonの依存関係のリストにあるバージョン情報を更新できた場合、「npm install」を実行すると、node_modulesのこれらのパッケージが更新されます。package-lock.jsonを手動で編集しないでください。代わりに、それを行う最善の方法は次のとおりです。

  1. これらのパッケージを一時的にプロジェクトの依存関係にします。

    npm install caniuse-lite browserslist

    これにより、パッケージが最新バージョンに更新されるだけでなく、package.jsonと(最も重要なのは)package-lock.jsonの両方の依存関係リストが更新されます。

  2. これらのパッケージをプロジェクトの直接の依存関係として削除します。

    npmアンインストールcaniuse-lite browserslist

    これらのパッケージは他の依存関係によって使用されるため、node_modulesから削除されません。package.jsonのみが更新され、プロジェクトの依存関係として削除されます。

  3. package-lock.jsonをコミットします。他の誰もが 'npm install'を実行して、package-lock.jsonのサブ依存関係のリストから更新された2つのパッケージを取得し、警告メッセージを停止することができます。


私はあなたの解決策を試しましたが、このメッセージ(Browserslist:caniuse-liteは古くなっています。次のコマンドを実行してくださいnpm update)とクリーンな角度設定でまだ警告があります。
アレクサンダークシュニル

@AlexanderKushir-手順1でインストールを実行した後、nodes_modulesのbrowserslistとcaniuse-liteを調べて、個々のpackage.jsonのバージョンが更新されたかどうかを確認します(caniuseliteの場合は1.0.30001019、browserslistの場合は4.8.3)。今日の)。browserlistの新しいバージョン(4.8.3)は、canisueliteが更新されていない場合にのみ文句を言うべきです。これらの2つのパッケージを更新しないキャッシングサーバーが.npmrcに設定されている可能性はありますか?(インストールされている場合は、インストールを実行する前に一時的に.npmrcの名前を変更してみてください)
jdh

私はそれをすべてやらなければならなかったcaniuse-lite、そしてメッセージは消えた
MoonStom

@MoonStom-caniuse-liteのみをインストールすると、アプリの依存関係として追加されますが、これは正確ではありません。問題はnpmとbrowserslistにあります。それらが修正されると、アプリはcaniuse-liteに依存しなくなります。
jdh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.