Angular Browserslist: caniuse-lite устарел. Пожалуйста, запустите следующую команду `npm update`

11

Я недавно начал получать эту ошибку в проекте Angular 8 (узел v10.16.0), над которым я работаю. Запуск npm-обновления caniuse-lite browserslist ничего не сделал

Поэтому я удалил package-lock.json, удалил node_modules и запустил npm install, но файл списка браузера исчез. Снова, когда я запускаю ng build, я получаю то же сообщение: Browserslist: caniuse-lite устарел. Пожалуйста, запустите следующую командуnpm update

Я вижу этот пост на ту же тему : Список обозревателей: caniuse-lite устарел. Пожалуйста, запустите следующую команду `npm update caniuse-lite browserslist`. Однако речь идет о WebCompiler и autoprefixer, и я понятия не имею о них. Пожалуйста, руководство

тарпон
источник
Q: Вы создали этот Angular проект с Visual Studio? В: Что случилось, когда вы просто следовали инструкциям и бежали npm update caniuse-lite browserslist?
FoggyDay
1
Да, Angular Project использует Visual Studio 2017. Ничего не произошло, когда я использую npm update caniuse-lite browserslist. Ничто не устанавливает ...
SilverFish
Так как файл списка браузеров пропал после того, как я установил новую npm (там есть caniuse-lite), вы рекомендуете запустить npm в browserlist?
SilverFish
У меня такая же проблема. в phpstrom он говорит мне запускаться, npm updateно это не решает проблему, просто сделал мою версию машинописи высокой для angular 8.
BlakkM9
1
У меня такая же проблема, Angular 8 с использованием кода Visual Studio, хотя я не уверен, почему редактор будет вызывать этот конфликт. Есть ли какие-либо ответы на этот вопрос? Мы должны выпустить огромную новую функцию на этой неделе и, конечно, теперь наше приложение не будет собираться. Я вижу несколько наших узлов node_modules, использующих список браузера
HomeBrew

Ответы:

8

Решил caniuse-lite устаревшую проблему, выполнив следующие команды.

npm cache clean  # optional
npm install caniuse-lite@latest --save
Dipten
источник
npm cache cleanне работает напрямую, так как он обрабатывается npm автоматически в последних версиях. Вы хотите, чтобы мы использовали --force? Если да, пожалуйста, объясните, почему мы должны уничтожать кеш.
Вишнудев
1
Очистка кеша npm не требуется. Вы можете прямо бежатьnpm install caniuse-lite@latest --save
Диптен
1
Добавление caniuse-lite в ваше приложение (через package.json bloat) не очень хорошая идея, так как это не зависимость вашего приложения - только ваш набор инструментов npm. Более подробное объяснение ниже. Также «--save» является избыточным, так как теперь это действие по умолчанию при установке.
JDH
Это успешно устанавливает caniuse-lite для меня, но я все еще получаю ту же ошибку.
Нольмн
Я попытался с узлом 10.x, и это исправлено. пожалуйста, проверьте версию вашего узла.
Диптен
2

TLDR: (может показаться нелогичным без объяснения причин)

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

Объяснение:

Это предупреждение msg («canisuse-lite устарел, пожалуйста ....») выводится скриптами в список браузеров во время сборки / запуска, если обнаруживает, что установленная версия caniuse-lite старше 2 версий из текущей версии. Если в вашем проекте ничего не изменилось и вы неожиданно видите это сообщение при запуске или создании проекта, это, вероятно, означает, что недавно было обновлено обновление до caniuse-lite.

К сожалению, текстовое сообщение, которое отображает список браузеров, полезно, только если вы установили caniuse-lite как зависимость вашего проекта. Скорее всего, вы этого не сделали. Поэтому, когда вы запускаете предложенное npm update caniuse-lite или npm update caniuse-lite @ latest (или npm install), npm не видит этот пакет, указанный в ваших зависимостях package.json, поэтому он игнорирует запрос.

Как эти пакеты стали зависимостями? Когда ваш проект был создан (возможно, с помощью приложения angularapp или create-Reaction-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 удалить список браузеров caniuse-lite

    Поскольку эти пакеты используются другими зависимостями, они не удаляются из node_modules. Только package.json обновляется, чтобы удалить их как зависимость проекта.

  3. Зафиксируйте package-lock.json. Любой другой может теперь просто запустить 'npm install', чтобы получить обновленные два пакета из списка подчиненных зависимостей в package-lock.json и остановить сообщение с предупреждением.

JDH
источник
Я опробовал ваше решение, но у меня все еще есть предупреждение с этим сообщением (список обозревателей: caniuse-lite устарел. Пожалуйста, введите следующую команду npm update) и с чистой угловой настройкой.
Александр Кушнир
@AlexanderKushir - после выполнения установки на шаге 1 найдите в node_modules список браузеров и caniuse-lite, чтобы проверить, была ли обновлена ​​их версия в отдельном package.json (должно быть 1.0.30001019 для caniuselite и 4.8.3 для браузера, так как сегодня). Новая версия списка браузеров (4.8.3) должна только жаловаться, если canisuelite не был обновлен. Возможно ли, что в .npmrc установлен сервер кэширования, который не обновляет эти два пакета? (Если да, попробуйте временно переименовать .npmrc перед установкой?)
jdh
Я только должен был сделать все это для, caniuse-liteи сообщение ушло
MoonStom
@MoonStom - если вы устанавливаете только caniuse-lite, вы добавляете это как зависимость вашего приложения, что не совсем точно. Проблема в npm и списке браузеров. Как только они будут исправлены, ваше приложение не должно зависеть от caniuse-lite.
JDH