Angular Browserslist: caniuse-lite jest nieaktualny. Uruchom następną komendę `npm update`

11

Niedawno zacząłem uzyskiwać ten błąd w projekcie Angular 8 (węzeł 10.10.0), nad którym pracuję. Uruchomienie aktualizacji npm caniuse-lite browserslist nic nie dało

Więc usunąłem pakiet-lock.json, usunąłem node_modules i uruchomiłem npm install, ale plik listy przeglądarki zniknął. Ponownie po uruchomieniu kompilacji pojawia się ten sam komunikat: Lista przeglądarek: caniuse-lite jest nieaktualny. Uruchom następne polecenienpm update

Widzę ten post na ten sam temat : Lista przeglądarek: caniuse-lite jest nieaktualny. Uruchom następną komendę `npm update caniuse-lite browserslist` Mówi jednak o WebCompiler i autoprefixerze i nie mam o nich pojęcia. Proszę poprowadź

SilverFish
źródło
P: Czy stworzyłeś ten projekt Angular w Visual Studio? P: Co się stało, gdy po prostu zastosowałeś się do instrukcji i pobiegłeś npm update caniuse-lite browserslist?
FoggyDay,
1
Tak, projekt kątowy używa Visual Studio 2017. Nic się nie stało, gdy korzystam z aktualizacji przeglądarki npm caniuse-lite. Nic się nie instaluje ...
SilverFish
Ponieważ plik listy przeglądarki zniknął po tym, jak wykonałem nową instalację npm (caniuse-lite jest tam), czy polecasz, aby uruchomić npm na liście przeglądarek?
SilverFish,
właśnie mam ten sam problem. w phpstrom każe mi biec, npm updateale to nie rozwiązało problemu, po prostu
ustawiłem
1
Mam również ten sam problem, Angular 8 używa kodu Visual Studio, chociaż nie jestem pewien, dlaczego edytor miałby powodować ten konflikt. Jakieś odpowiedzi na ten temat? W tym tygodniu powinniśmy wydać ogromną nową funkcję i oczywiście teraz nasza aplikacja się nie zbuduje. Widzę kilka naszych modułów node_module za pomocą listy przeglądarek
HomeBrew

Odpowiedzi:

8

Rozwiązany przestarzały problem caniuse-lite uruchomiono poniżej poleceń.

npm cache clean  # optional
npm install caniuse-lite@latest --save
Dipten
źródło
npm cache cleannie działa bezpośrednio, ponieważ jest obsługiwane automatycznie przez npm w najnowszych wersjach. Chcesz, żebyśmy użyli --force? Jeśli tak, proszę wyjaśnić, dlaczego powinniśmy nucować pamięć podręczną.
Vishnudev
1
czyszczenie pamięci podręcznej npm nie jest wymagane. możesz biegać bezpośrednionpm install caniuse-lite@latest --save
Dipten
1
Dodanie caniuse-lite do aplikacji (przez bloat package.json) nie jest dobrym pomysłem, ponieważ nie jest zależnością twojej aplikacji - tylko zestaw narzędzi npm. Zobacz dłuższe wyjaśnienie poniżej. Również „--save” jest zbędne, ponieważ jest teraz domyślną akcją przy instalacji.
jdh
To instaluje dla mnie caniuse-lite, ale wciąż pojawia się ten sam błąd.
nullmn
Próbowałem z węzłem 10.x i zostało to naprawione. sprawdź wersję swojego węzła.
Dipten
2

TLDR: (może wydawać się sprzeczne z intuicją bez wyjaśnienia)

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

Wyjaśnienie:

To ostrzeżenie msg („canisuse-lite jest nieaktualne, proszę ....”) jest wysyłane przez skrypty na liście przeglądarek podczas kompilacji / uruchamiania, jeśli stwierdzi, że zainstalowana wersja caniuse-lite jest starsza niż 2 wersje z bieżącej wersji. Jeśli nic w twoim projekcie się nie zmieniło i nagle zobaczysz ten komunikat podczas uruchamiania lub budowania projektu, prawdopodobnie oznacza to, że była ostatnia aktualizacja wersji caniuse-lite.

Niestety, wiadomość tekstowa wyświetlana na liście przeglądarek jest pomocna tylko wtedy, gdy zainstalowałeś caniuse-lite jako zależność twojego projektu. Najprawdopodobniej nie. Więc kiedy uruchomisz sugerowaną wersję „npm update caniuse-lite” lub „npm update” caniuse-lite @ latest ”(lub„ npm install ”), npm nie widzi tego pakietu na liście zależności w pakiecie.json, więc ignoruje prośba.

W jaki sposób te pakiety stały się zależnościami? Kiedy Twój projekt został utworzony (być może z aplikacją angularapp lub create-React-app lub podobną dla twojego frameworka), npm zainstalowała listę przeglądarek jako zależność od potrzebnych narzędzi, a nie jako zależność twojego projektu. W tym samym czasie caniuse-lite został zainstalowany jako zależność listy przeglądarek. Później, kiedy projekt został zaktualizowany, utworzono plik package-lock.json, który blokuje wszystkie zależności do określonej wersji.

Jeśli byłbyś w stanie zaktualizować informacje o wersji na liście zależności w package-lock.json, to uruchomienie „npm install” zaktualizowałoby te pakiety w module node_modules. Nie należy ręcznie edytować pliku package-lock.json. Zamiast tego najlepszym sposobem na to jest:

  1. Tymczasowo uczyń te pakiety zależnymi od twojego projektu:

    npm zainstaluj caniuse-lite browserslist

    Oprócz aktualizacji pakietu do najnowszej wersji, aktualizuje to listę zależności zarówno w pliku package.json, jak i (co najważniejsze) pakiet-lock.json.

  2. Usuń te pakiety jako bezpośrednie zależności projektu:

    odinstaluj npm caniuse-lite browserslist

    Ponieważ te pakiety są używane przez inne zależności, nie są usuwane z modułów node_modules. Aktualizowany jest tylko pakiet.json, aby usunąć je jako zależność projektu.

  3. Zatwierdź pakiet-lock.json. Każdy inny użytkownik może teraz uruchomić „npm install”, aby pobrać zaktualizowane dwa pakiety z listy zależności zależnych w pliku package-lock.json i zatrzymać komunikat ostrzegawczy.

jdh
źródło
Wypróbowałem już twoje rozwiązanie, ale nadal mam ostrzeżenie z tym komunikatem (Lista przeglądarek: caniuse-lite jest nieaktualny. Uruchom następne polecenie npm update) i przy czystej konfiguracji kątowej.
Alexander Kushnir
@AlexanderKushir - po wykonaniu instalacji w kroku 1, poszukaj w node_modules listy przeglądarek i caniuse-lite, aby sprawdzić, czy ich wersja w indywidualnym pakiecie.json została zaktualizowana (powinna wynosić 1.0.30001019 dla caniuselite i 4.8.3 dla listy przeglądarek, ponieważ z dzisiaj). Nowa wersja listy przeglądarek (4.8.3) powinna narzekać tylko, jeśli canisuelite nie został zaktualizowany. Czy to możliwe, że masz serwer buforujący ustawiony w .npmrc, który nie aktualizuje tych dwóch pakietów? (Jeśli tak, spróbuj tymczasowo zmienić nazwę pliku .npmrc przed wykonaniem instalacji?)
jdh
Musiałem tylko to wszystko zrobić, caniuse-litea wiadomość zniknęła
MoonStom
@MoonStom - jeśli instalujesz tylko caniuse-lite, dodajesz to jako zależność twojej aplikacji, co nie jest dokładne. Problem dotyczy npm i listy przeglądarek. Po ich naprawieniu aplikacja nie powinna zależeć od caniuse-lite.
jdh