Кутовий список браузерів: caniuse-lite застарів. Будь ласка, запустіть наступну команду `npm update '


11

Нещодавно я почав отримувати цю помилку в проекті Angular 8 (вузол v10.16.0), над яким я працюю. Запуск браузерного списку браузерних програм caniuse-lite нічого не зробив нічого

Тож я видалив package-lock.json, видалив node_modules і запустив npm install, але файл списку браузера пішов. Знову, коли я запускаю збірку, я отримую те саме повідомлення: Browserslist: caniuse-lite застарів. Будь ласка, запустіть наступну командуnpm update

Я бачу цю публікацію на ту саму тему: Список браузерів: caniuse-lite застарів. Будь ласка, запустіть наступну команду `npm update caniuse-lite Browserslist` Однак, вона говорить про WebCompiler та autoprefixer, і я не маю про них уявлення. Будь ласка, керівництво


Питання: Ви створили цей кутовий проект за допомогою Visual Studio? Питання: Що сталося, коли ви просто дотримувались інструкцій та бігли npm update caniuse-lite browserslist?
FoggyDay

1
Так, кутовий проект використовує Visual Studio 2017. Нічого не сталося, коли я використовую браузерний список оновлень caniuse-lite для npm. Ніщо не встановлює ...
серебрянки

Оскільки файл списку браузерів відсутній після того, як я встановив свіжу npm (чи є caniuse-lite), чи рекомендуєте я запустити npm у списку браузерів?
серебрянки

У мене просто така ж проблема. у phpstrom це говорить мені запустити, npm updateале це не вирішило проблему, я просто зробив мою версію машинопису до високої для кутового 8.
BlakkM9

1
У мене теж є ця проблема, Angular 8 з використанням коду Visual Studio, хоча я не впевнений, чому саме редактор спричинив би цей конфлікт. Будь-які відповіді на це ще немає? На цьому тижні ми повинні випустити величезну нову функцію, і, звичайно, зараз наш додаток не збирається. Я бачу декілька наших node_modules за допомогою списку браузерів
HomeBrew

Відповіді:


8

Вирішено застарілу проблему, пов’язану з канюзою, виконавши команди нижче.

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

npm cache cleanне працює безпосередньо, оскільки ним обробляється npm автоматично в останніх версіях. Ви хочете, щоб ми використовували --force? Якщо так, то, будь ласка, поясніть, чому нам слід запускати кеш.
Вишнудев

1
чистий кеш-пам'ять npm не потрібен. можна безпосередньо бігтиnpm install caniuse-lite@latest --save
Dipten

1
Додавання програми caniuse-lite до вашої програми (через package.json bloat) - не дуже гарна ідея, оскільки це не залежність вашого додатка - лише ваш набір інструментів npm. Дивіться довше пояснення нижче. Також "--save" є надлишком, оскільки це тепер дію за замовчуванням із встановленням.
jdh

Це успішно встановлює програму caniuse-lite, але я все одно отримую ту саму помилку.
nullmn

Я спробував з вузлом 10.x, і він виправлений. перевірте версію свого вузла.
Dipten

2

TLDR: (може здатися протиінтуїтивно зрозумілим без пояснень)

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

Пояснення:

Це попередження msg ("canisuse-lite застаріло, будь ласка ....") виводиться сценаріями у списку браузерів під час збирання / запуску, якщо він знайде встановлену версію caniuse-lite старшу, ніж 2 версії від поточної версії. Якщо нічого у вашому проекті не змінилося, і ви раптом побачите цю msg під час запуску чи створення проекту, це, ймовірно, означає, що нещодавно оновлено версію до caniuse-lite.

На жаль, текстовий msg, який відображається у списку браузерів, корисний лише у тому випадку, якщо ви встановили caniuse-lite як залежність свого проекту. Швидше за все, ви цього не зробили. Отже, коли ви запускаєте запропоновану функцію 'npm update caniuse-lite' або 'npm update' caniuse-lite @ latest '(або' npm install '), npm не бачить цього пакета, вказаного у ваших залежностях package.json, тому він ігнорує запит.

Як тоді ці пакети стали залежностями? Коли ваш проект був створений (можливо, за допомогою програми angularapp або create-react-app чи подібного для вашої основи), npm встановив список браузерів як залежність від необхідних інструментів, а не як одна із залежностей вашого проекту. У той же час, caniuse-lite був встановлений як залежність від списку браузерів. Пізніше, коли проект було оновлено, було створено файл package-lock.json, який фіксує всі залежності до певної версії.

Якщо б вам вдалося оновити інформацію про версію у списку залежностей у package-lock.json, то запуск "npm install" оновив би ці пакунки в node_modules. Не слід редагувати package-lock.json вручну. Натомість найкращий спосіб зробити це:

  1. Тимчасово зробіть ці пакети залежними від вашого проекту:

    npm встановити список браузерів caniuse-lite

    Окрім оновлення пакета до останньої версії, це оновлення списку залежностей як у package.json, так і (що найважливіше) package-lock.json.

  2. Видаліть ці пакети як прямі залежності вашого проекту:

    npm видаліть список браузерів-каніусів

    Оскільки ці пакети використовуються іншими залежностями, вони не видаляються з node_modules. Оновлено лише package.json, щоб видалити їх як залежність від проекту.

  3. Здійснити пакет-lock.json. Тепер будь-хто інший може просто запустити 'npm install', щоб отримати оновлені два пакети зі списку підзалежностей у package-lock.json та зупинити повідомлення попередження.


Мені було випробувано ваше рішення, але я все ще маю попередження з цим повідомленням (браузерний список: caniuse-lite застарів. Будь ласка, запустіть наступну команду npm update) і з чистою кутовою установкою.
Олександр Кушнір

@AlexanderKushir - виконавши встановлення на кроці 1, знайдіть node_modules для браузерного списку та caniuse-lite, щоб перевірити, чи була оновлена ​​їх версія в їхньому індивідуальному пакеті.json (має бути 1.0.30001019 для caniuselite і 4.8.3 для браузерного списку, як сьогодні). Нова версія списку браузерів (4.8.3) повинна скаржитися лише у тому випадку, якщо канісуліт не був оновлений Чи можливо у вас встановлений сервер кешування в .npmrc, який не оновлює ці два пакети? (Якщо ви є, спробуйте тимчасово перейменувати .npmrc перед тим, як встановити?)
jdh

Мені довелося лише все це зробити, caniuse-liteі повідомлення пропало
MoonStom

@MoonStom - якщо ви встановлюєте лише caniuse-lite, ви додаєте це як залежність від вашої програми, що не є точним. Проблема полягає в npm та переліку браузерів. Після того, як вони будуть виправлені, ваша програма не повинна залежати від caniuse-lite.
jdh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.