Angular Browserslist: caniuse-lite ist veraltet. Bitte führen Sie den nächsten Befehl `npm update` aus

11

Ich habe kürzlich begonnen, diesen Fehler in einem Angular 8-Projekt (Knoten 10.16.0) zu erhalten, an dem ich arbeite. Das Ausführen der Browserliste "npm update caniuse-lite" hat nichts bewirkt

Also habe ich package-lock.json entfernt, node_modules entfernt und npm install ausgeführt, aber die Browserlistendatei ist verschwunden. Wenn ich ng build ausführe, erhalte ich dieselbe Meldung: Browserliste: caniuse-lite ist veraltet. Bitte führen Sie den nächsten Befehl ausnpm update

Ich sehe diesen Beitrag zum selben Thema : Browserliste: caniuse-lite ist veraltet. Bitte führen Sie den nächsten Befehl `npm update caniuse-lite browserslist` aus. Es handelt sich jedoch um WebCompiler und Autoprefixer, und ich habe keine Ahnung davon. Bitte führen

Silberfisch
quelle
F: Haben Sie dieses Angular-Projekt mit Visual Studio erstellt? F: Was ist passiert, als Sie einfach den Anweisungen gefolgt sind und gelaufen sind npm update caniuse-lite browserslist?
FoggyDay
1
Ja, Angular Project verwendet Visual Studio 2017. Bei Verwendung der Browserliste "npm update caniuse-lite" ist nichts passiert. Nichts installiert ...
SilverFish
Empfehlen Sie mir, npm in der Browserliste auszuführen, da die Browserlistendatei nach der Neuinstallation von npm nicht mehr vorhanden ist (caniuse-lite ist vorhanden)?
SilverFish
Ich habe gerade das gleiche Problem. in phpstrom sagt es mir, dass ich laufen soll, npm updateaber das hat das Problem nicht gelöst, sondern meine Typoskript-Version für Winkel 8 zu hoch gemacht.
BlakkM9
1
Ich habe das gleiche Problem auch, Angular 8 mit Visual Studio-Code, obwohl ich nicht sicher bin, warum der Editor diesen Konflikt verursachen würde. Irgendwelche Antworten dazu noch? Wir sollen diese Woche eine riesige neue Funktion veröffentlichen und natürlich wird unsere App jetzt nicht mehr erstellt. Ich sehe einige unserer node_modules mit der Browserliste
HomeBrew

Antworten:

8

Das veraltete Caniuse-Lite-Problem wurde behoben, indem die folgenden Befehle ausgeführt wurden.

npm cache clean  # optional
npm install caniuse-lite@latest --save
Dipten
quelle
npm cache cleanfunktioniert nicht direkt, da es in den neuesten Versionen von npm automatisch verarbeitet wird. Möchten Sie, dass wir verwenden --force? Wenn ja, erklären Sie bitte, warum wir den Cache zerstören sollten.
Vishnudev
1
npm cache clean ist nicht erforderlich. Sie können direkt laufennpm install caniuse-lite@latest --save
Dipten
1
Das Hinzufügen von caniuse-lite zu Ihrer App (über package.json bloat) ist keine gute Idee, da es keine Abhängigkeit von Ihrer App ist - nur von Ihrem npm-Toolset. Siehe längere Erklärung unten. Auch '--save' ist redundant, da es jetzt die Standardaktion bei der Installation ist.
jdh
Dies installiert caniuse-lite erfolgreich für mich, aber ich erhalte immer noch den gleichen Fehler.
nullmn
Ich habe es mit Node 10.x versucht und es wurde behoben. Bitte überprüfen Sie Ihre Knotenversion.
Dipten
2

TLDR: (mag ohne die Erklärung kontraintuitiv erscheinen)

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

Erläuterung:

Diese Warnmeldung ("canisuse-lite ist veraltet, bitte ...") wird beim Erstellen / Starten von Skripten in der Browserliste ausgegeben, wenn festgestellt wird, dass die installierte Version von caniuse-lite älter als 2 Versionen der aktuellen Version ist. Wenn sich an Ihrem Projekt nichts geändert hat und Sie diese Meldung beim Starten oder Erstellen Ihres Projekts plötzlich sehen, bedeutet dies wahrscheinlich, dass ein aktuelles Versionsupdate für caniuse-lite vorliegt.

Leider ist die in der Browserliste angezeigte Textnachricht nur hilfreich, wenn Sie caniuse-lite als Abhängigkeit von Ihrem Projekt installiert haben. Höchstwahrscheinlich haben Sie nicht. Wenn Sie also das vorgeschlagene 'npm-Update caniuse-lite' oder 'npm-Update' caniuse-lite @ latest '(oder' npm install ') ausführen, sieht npm das in Ihren package.json-Abhängigkeiten aufgeführte Paket nicht und ignoriert es daher die Anfrage.

Wie wurden diese Pakete dann zu Abhängigkeiten? Als Ihr Projekt erstellt wurde (möglicherweise mit App AngularApp oder Create-React-App oder ähnlichem für Ihr Framework), installierte npm die Browserliste als Abhängigkeit von den benötigten Tools und nicht als eine der Abhängigkeiten Ihres Projekts. Gleichzeitig wurde caniuse-lite als Abhängigkeit von der Browserliste installiert. Später, als das Projekt aktualisiert wurde, wurde eine package-lock.json-Datei erstellt, die alle Abhängigkeiten von einer bestimmten Version sperrt.

Wenn Sie die Versionsinformationen in der Liste der Abhängigkeiten in package-lock.json aktualisieren könnten, würde das Ausführen von 'npm install' diese Pakete in node_modules aktualisieren. Sie sollten package-lock.json nicht manuell bearbeiten. Stattdessen ist der beste Weg, dies zu tun:

  1. Machen Sie diese Pakete vorübergehend zu einer Abhängigkeit Ihres Projekts:

    npm install caniuse-lite browserslist

    Zusätzlich zum Aktualisieren des Pakets auf die neueste Version wird die Abhängigkeitsliste sowohl in package.json als auch (am wichtigsten) package-lock.json aktualisiert.

  2. Entfernen Sie diese Pakete als direkte Abhängigkeiten Ihres Projekts:

    npm deinstallieren caniuse-lite browserlist

    Da diese Pakete von anderen Abhängigkeiten verwendet werden, werden sie nicht aus node_modules entfernt. Nur package.json wird aktualisiert, um sie als Projektabhängigkeit zu entfernen.

  3. Übernehmen Sie package-lock.json. Jeder andere kann jetzt einfach 'npm install' ausführen, um die aktualisierten zwei Pakete aus der Liste der Unterabhängigkeiten in package-lock.json abzurufen und die Warnmeldung zu stoppen.

jdh
quelle
Ich habe Ihre Lösung ausprobiert, aber ich habe immer noch eine Warnung mit dieser Meldung (Browserliste: caniuse-lite ist veraltet. Bitte führen Sie den nächsten Befehl aus npm update) und mit einem sauberen Winkel-Setup.
Alexander Kushnir
@AlexanderKushir - Suchen Sie nach der Installation in Schritt 1 in node_modules nach Browserliste und caniuse-lite, um zu überprüfen, ob die Version in der jeweiligen package.json aktualisiert wurde (sollte 1.0.30001019 für caniuselite und 4.8.3 für Browserliste sein, as von heute). Die neue Version der Browserliste (4.8.3) sollte sich nur beschweren, wenn Canisuelite nicht aktualisiert wurde. Ist es möglich, dass in .npmrc ein Caching-Server eingerichtet ist, der diese beiden Pakete nicht aktualisiert? (Wenn ja, versuchen Sie, .npmrc vorübergehend umzubenennen, bevor Sie die Installation durchführen?)
jdh
Ich musste nur das alles tun caniuse-liteund die Nachricht ist weg
MoonStom
@MoonStom - Wenn Sie nur caniuse-lite installieren, fügen Sie dies als Abhängigkeit Ihrer App hinzu, was nicht korrekt ist. Das Problem liegt in npm und der Browserliste. Sobald diese behoben sind, sollte Ihre App nicht mehr von caniuse-lite abhängig sein.
jdh