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

В последнее время, когда я компилирую файлы scss, я получаю сообщение об ошибке. В сообщении об ошибке говорится:

Browserslist: caniuse-lite is outdated. Please run next command npm update caniuse-lite browserslist

Сначала, как говорится в сообщении, я запустил npm update caniuse-lite browserslist, но это не решило проблему. Я удалил весь каталог nod-modules и установил его снова, также я обновил всю папку с помощью npm update, но ни один из них не решил проблему. Я также переустановил автопрефиксер и список браузеров, но ни один из них не решил проблему.

если я удалю

"options": {
      "autoPrefix": "> 1%"
    }

по моему compilerconfig.json все работает нормально, значит наверное дело в автопрефиксере. Кроме того, я вручную изменил версию пакета на последнюю версию package.json и переустановил, но безуспешно.

Настройка шаблона Metronic с помощью Webpack и Gulp
Настройка шаблона Metronic с помощью Webpack и Gulp
Я пишу эту статью, чтобы поделиться тем, как настроить макет Metronic с помощью Sass, поскольку Metronic предоставляет так много документации, и они...
172
0
265 283
21
Перейти к ответу Данный вопрос помечен как решенный

Ответы 21

Ответ принят как подходящий

Похоже, вы используете расширение веб-компилятора Visual Studio. Здесь есть открытая проблема: https://github.com/madskristensen/WebCompiler/issues/413.

В этой проблеме опубликован обходной путь:

  1. Закрыть Visual Studio
  2. Перейдите к C:\Users\USERNAME\AppData\Local\Temp\WebCompilerX.X.X (X — это версия WebCompiler)
  3. Удалите из папки node_modules следующие папки: caniuse-lite и browserslist Откройте CMD (внутри C:\Users\USERNAME\AppData\Local\Temp\WebCompilerX.X.X) и запустите: npm i caniuse-lite browserslist

Я сделал это, и у меня больше нет этой ошибки, но я получил новую ошибку: Ошибка плагина: не удается найти модуль «автопрефиксер». Я попытался переустановить и обновить autoprefixer, но все равно получаю эту ошибку.

Nick Mehrdad Babaki 21.03.2019 23:26

Похоже на другую проблему. Если у вас есть ссылка на ваш проект в Интернете или вы можете собрать другой проект, в котором есть проблема, я был бы рад взглянуть на него.

Scott Kuhl 23.03.2019 00:31

Кажется, когда я пытался решить проблему, обновляя и переустанавливая автопрефиксер, я что-то сломал. К счастью, сегодня веб-компилятор обновился, и я снова увидел это сообщение об ошибке. Я выполнил шаги, описанные выше, и на этот раз проблема устранена.

Nick Mehrdad Babaki 28.03.2019 06:49

Любая идея, где этот каталог находится на Mac?

Safa Alai 12.11.2020 03:15

Как упоминалось в ответе Скотта Куля, эта проблема упоминается в https://github.com/madskristensen/WebCompiler/issues/413

Для меня запуск команды npm i caniuse-lite- browserslist работал только около 1/2 дня, прежде чем это снова стало проблемой.

Следующее решение, упомянутое в посте, работает намного лучше. Это обновляет файл node.js, чтобы он использовал console.info вместо console.warn при возврате этих ошибок.

Вы можете вручную обновить этот файл, расположенный по адресу C:\Users\[имя пользователя]\AppData\Local\Temp\WebCompiler[номер версии]\node_modules\browserslist

Или, чтобы это делалось автоматически, добавьте в свой файл .csproj следующее:

  1. Щелкните правой кнопкой мыши файл проекта и выберите «Выгрузить проект».
  2. Отредактируйте файл .csproj
  3. Вставьте следующее в файл проекта. Я вставил его ближе к концу файла, перед конечным тегом </Project> и до импорта пакета веб-компилятора сборки.
    <ItemGroup>
        <PackageReference Include = "MSBuildTasks" Version = "1.5.0.235">
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
        </PackageReference>
    </ItemGroup>
    <PropertyGroup>
        <TempFolder>$([System.IO.Path]::GetTempPath())</TempFolder>
    </PropertyGroup>
    <ItemGroup>
        <BrowsersListNodeJsFiles Include = "$(TempFolder)\WebCompiler*\node_modules\browserslist\node.js" />
    </ItemGroup>
    <Target Name = "BrowsersListWarningsAsInfo" BeforeTargets = "WebCompile">
        <FileUpdate Files = "@(BrowsersListNodeJsFiles)"
                    Regex = "console.warn"
                    ReplacementText = "console.info" />
    </Target>

  1. Перезагрузите проект обратно в решение.

Спасибо! Это было лучшее решение для меня. Вышеупомянутые исправления устаревают через день!

Bradly Bennison 06.01.2020 20:31

npm --depth 9999 update исправила проблему для меня — по-видимому, потому, что package-lock.json настаивал на устаревших версиях.

Даже npm --depth 99 update caniuse-lite browserslist вызывал JavaScript heap out of memory в моем проекте, но npm --depth 20 update caniuse-lite browserslist работал быстро и решил ошибку в моем случае.

Nil 14.06.2019 10:33
--depth флаг устарел - ссылка
alljamin 12.03.2021 05:37

@AlexandrNil Спасибо, братан, это решило проблему для меня!

tonix 12.03.2021 08:18

Я получаю неизвестную версию 62 op_mob. Интересно, является ли это частью проблемы.

Winnemucca 03.12.2021 19:05

Продолжение ответ выше.

Была та же «ошибка плагина», что и у @MehrdadBabaki. Я удалил веб-компилятор, удалил упомянутую выше папку AppData WebCompiler, затем снова открыл VS2019 и переустановил веб-компилятор.

ТОГДА я снова зашел в папку WebCompiler и сделал npm i autoprefixer@latestnpm i caniuse-lite@latest и npm i caniuse-lite browserslist@latest

просто обновите автопрефиксер, caniuse-lite, browserslist мне подходит

cwhsu 28.07.2019 07:26

Я нашел короткий путь, вместо того, чтобы проходить vs code appData/webCompiler, я добавил его как зависимость к моему проекту с помощью этой командыnpm i caniuse-lite browserslist. Но вы можете установить его глобально, чтобы не добавлять его в каждый проект.

После установки вы можете удалить его из своего проекта package.json и сделать npm i.

Обновлять:

В случае, если вышеприведенное решение не помогло. Вы можете запустить npm update, так как это обновит устаревшие/устаревшие пакеты.

Примечание:

После запуска обновления npm могут отсутствовать зависимости. Отследите ошибку и установите недостающие зависимости. У меня был nodemon, который я исправил npm i nodemon -g

У меня не было папки /WebCompiler в моей папке /TEMP, как предлагалось в некоторых других сообщениях, поэтому я запустил эту командную строку, и, похоже, проблема устранена.

AppDreamer 26.06.2019 22:15

У меня была такая же проблема, эта команда работает для меня

npm i autoprefixer@latest

Он автоматически добавил необходимую зависимость в файл package.json и package-lock.json, как показано ниже:

пакет.json

"autoprefixer": "^9.6.5",

пакет-lock.json

"@angular-devkit/build-angular": {

...

"dependencies": {
    "autoprefixer": {
      "version": "9.4.6",
      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.4.6.tgz",
      "integrity": "sha512-Yp51mevbOEdxDUy5WjiKtpQaecqYq9OqZSL04rSoCiry7Tc5I9FEyo3bfxiTJc1DfHeKwSFCUYbBAiOQ2VGfiw= = ",
      "dev": true,
      "requires": {
        "browserslist": "^4.4.1",
        "caniuse-lite": "^1.0.30000929",
        "normalize-range": "^0.1.2",
        "num2fraction": "^1.2.2",
        "postcss": "^7.0.13",
        "postcss-value-parser": "^3.3.1"
      }
    },

...

  }

...

"autoprefixer": {
    "version": "9.6.5",
    "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.5.tgz",
    "integrity": "sha512-rGd50YV8LgwFQ2WQp4XzOTG69u1qQsXn0amww7tjqV5jJuNazgFKYEVItEBngyyvVITKOg20zr2V+9VsrXJQ2g= = ",
    "requires": {
      "browserslist": "^4.7.0",
      "caniuse-lite": "^1.0.30000999",
      "chalk": "^2.4.2",
      "normalize-range": "^0.1.2",
      "num2fraction": "^1.2.2",
      "postcss": "^7.0.18",
      "postcss-value-parser": "^4.0.2"
    },

...

}

Я понизил версию узла с 12 до 10.

РЕДАКТИРОВАТЬ

Эта ошибка произошла со мной, потому что я использовал версию узла 12. Когда я перехожу на версию 10.16.5, эта ошибка прекращается. Эта ошибка произошла в моем локальном env, но в prod и staging этого не происходит. Версия prod и staging node — 10.x, поэтому я просто делаю это, и мне не нужно обновлять какой-либо пакет в моем package.json.

Добро пожаловать в СО! Когда вы публикуете ответ, даже если он правильный, попробуйте немного объяснить.

David García Bodego 24.10.2019 05:10

Это неплохой ответ ... просто немного отредактируйте его и готово.

David García Bodego 24.10.2019 15:04

Я не совсем уверен, в чем была моя проблема, но я думаю, что это было из-за того, что я использовал одни и те же глобальные пакеты как из npm, так и из Yarn.

Я удалил все глобальные пакеты npm, после чего при повторном использовании команд пряжи проблема исчезла.

Чтобы увидеть установленные глобальные пакеты...

для нпм:

npm ls -g --depth=0

для пряжи:

yarn global list

Затем я удалил все пакеты, которые видел в списке npm, используя:

npm uninstall -g <package-name>

Для угловых разработчиков

Хотя, я отвечаю на это очень поздно. У меня есть дурная привычка проверять журналы изменений каждой библиотеки, которую я использую ?, и, проверяя примечания к выпуску Angular CLI, я выяснил, что вчера (9 января 2020 г.) они выпустили новый патч, который устраняет эту проблему.

https://github.com/angular/angular-cli/releases/tag/v8.3.22

Поэтому, когда вы будете запускать ng update, вы должны получать обновления для @angular/cli:

И запуск ng update @angular/cli исправит это предупреждение.

Ваше здоровье!

В моем случае я удалил папки caniuse-lite, browserslist из node_modules.

Затем я набираю следующую команду для установки пакетов.

npm i -g browserslist caniuse-lite --save

работал нормально.

Мы должны были добавить npm i browserslist caniuse-lite --save

sneaky 19.06.2020 09:26

Чтобы решить эту проблему, вы можете ввести следующую команду:

'npm -g update'

Удаление node_modules, package-lock.json и npm i решает проблему для меня.

удаление package-lock.json может привести к некоторой ошибке критических изменений, если у вас есть длинная история установки пакета, например, проект, который работал и разрабатывался более года и имеет пакеты, которые имеют много зависимостей 3-го уровня, может сделать критические изменения

kafinsalim 20.08.2020 00:43

Я исправил эту проблему, шаг за шагом:

  1. удалить node_modules
  2. удалить package-lock.json,
  3. беги npm --depth 9999 update
  4. беги npm install

Будьте осторожны с удалением package-lock.json, так как это может привести к критическим изменениям, и этого следует избегать.

Liam 14.12.2020 02:08

Если вы используете пряжу:

yarn upgrade

Помогите мне

Попробуйте это, это решило мою проблему npx browserslist@latest --update-db

Для контекста: моя IDE — это VS Code, и мой проект JS включал только Parcel, react и react-dom, когда я начал видеть эту ошибку. Ни один из вышеперечисленных вариантов не сработал. Это решение исправило мое.

Klay 11.08.2020 16:31

Сбой в Windows ``` C:\projects\ember-cli-typescript-blueprints>npx browserslist@latest --update-db npm ERR! cb.apply не является функцией npm ERR! Полный журнал этого запуска можно найти в: npm ERR! c:\npm\cache_logs\2020-11-15T14_19_08_958Z-debug.log Установка для ['browserslist@latest'] не удалась с кодом 1 ```

bryan.crotaz 15.11.2020 15:19

Что такое npx? Чем он отличается от npm?

Marquizzo 15.01.2021 10:19

@Marquizzo npx — это способ напрямую выполнить пакет npm, не сохраняя его в вашей системе.

Ahmed Kamal 17.01.2021 14:58

Источник объяснений находится в разделе «Обновление данных браузеров» на главной странице браузера npm: npmjs.com/package/browserslist.

Pierre Cordier 18.02.2021 15:33

Некоторая информация о том, что делает --update-db : обновляет базу данных caniuse-lite с помощью браузеров. Со всеми данными последние 2 версии или> 1% вернут старые браузеры, а Autoprefixer/Babel будет вставлять полифиллы для браузеров, которые в настоящее время никто не использует. Другим вариантом будет запуск обновления npm, но он обновит все ваши зависимости, что заставит вас запустить полный процесс контроля качества.

AnandShiva 11.05.2021 22:48

Потрясающий бхаи. Я столкнулся с двумя другими проблемами, но вы решили их все за один раз. :-) Однако есть лишь небольшая разница в @latest, но ваш ответ решил и эту проблему: stackoverflow.com/questions/58155525/…

Tanzeel 07.06.2021 20:33

Я выполнил эту команду, рекомендованную nx. Теперь все мои npm-скрипты завершаются с Unknown version 62 of op_mob. Кто-нибудь вернул эту ошибку?

Winnemucca 07.12.2021 00:56

Обратите внимание, что это не только для NPM! Эта команда работает и с Yarn. Выдергивание из их ридми: updates caniuse-lite version in your npm, yarn or pnpm lock file.

James Irwin 16.01.2022 08:41

Где мне запустить эту команду, когда я просто запускаю ее в корне, он говорит, что package.json не может быть найден.

Anton Lipovskoy 20.01.2022 10:10

Минимальное решение, которое сработало для меня для текущего проекта

  • Проект создания-реакции-приложения
  • Убунту/*никс
  • 2020
  • Узел 14.7

удалить каталог node_modules/browserslist в проекте

сейчас

npm run build

больше не генерирует это сообщение

Если вы только что удалили каталог, что произойдет в следующий раз, когда вы npm install/npm ci?

jonrsharpe 16.08.2020 17:29

на самом деле я столкнулся с проблемой с перфиксом css, наконец, я обновил приложение create-create-app для этого проекта, и все было хорошо.

Michael Durrant 16.08.2020 19:12

Многие советуют удалить package-lock.json или yarn.lock. Это явно плохая идея!

Я использую Yarn, и мне удалось исправить эту проблему, удалив только записи caniuse-db и caniuse-lite в моем yarn.lock и выполнив yarn.

Нет необходимости нарушать основную функцию файла блокировки, удаляя его.

Такой же. У меня не было caniuse-db в yarn.lock, но у меня было две записи для caniuse-lite. Удалил их обоих, а затем снова yarn installed. Работал как шарм.

Michael Johansen 13.06.2021 22:31

Это единственный способ, если все другие методы не помогли. Я застрял в этом на несколько часов, спасибо за это

AACaN 10.11.2021 05:44

Простое и безопасное решение

Ответ от @Alexandr Nil безопасен и эффективен для меня. Я пишу как полный ответ, потому что его комментарий легко пропустить.

npm --depth 20 update --save caniuse-lite browserslist 

Это хорошо, потому что:

  1. Нет удаления package-lock.json. Удаление этого сделало бы вас уязвимыми для многих пакетов, которые будут обновлены с критическими изменениями, и у вас будет гораздо большая головная боль, чем раньше!

  2. Легко понять, что именно он делает, потому что он явный и очень ограничен в отношении того, что должно быть обновлено.

  3. Это позволяет избежать очень большой глубины 99 или 9999, которая будет работать на некоторых проектах и ​​системах, но не на других. Если вы ограничили глубину слишком маленьким числом, это ничего не сломает. Вы можете увеличить глубину и повторить попытку, пока проект не будет успешно скомпилирован. Я не знаю, действительно ли мне нужно было 20, или я мог бы справиться с меньшей глубиной, например, 5 или 10. Но с глубиной 20 мне понадобилось меньше минуты, чтобы пробежаться.

  4. Это быстро и легко!

Спасибо @Zbyszek за предложение добавить опцию «--save». И да, --depth в настоящее время устарел, но я предполагаю, что они заменят его чем-то другим, а не полностью удалят, поэтому на данный момент это кажется наименее разрушительным подходом.

В настоящее время --depth устарел и просто не влияет на работу обновления. См. реализованный RFC0019. Также может потребоваться добавить --save в некоторых случаях, например, в локальной папке node_modules. В противном случае - хороший ответ, мне нравится этот способ больше, чем удаление папок (что может стать плохим способом сделать это).

Zbyszek 25.05.2021 16:35

Следующие шаги сработали для меня

  1. rm -rf node_modules/
  2. yarn
  3. yarn upgrade caniuse-lite browserlist
  4. перезагрузите сервер и очистите кеш браузера.

Существует переменная среды >= 4.5.4, BROWSERSLIST_IGNORE_OLD_DATA, которую вы можете установить, чтобы подавить предупреждение (BROWSERSLIST_IGNORE_OLD_DATA=true). См. коммит Добавьте переменную среды BROWSERSLIST_IGNORE_OLD_DATA..

Вот фрагмент соответствующего кода из этой фиксации, показывающий раннее спасение после проверки этой переменной среды:

module.exports = {
  // ...
  oldDataWarning: function oldDataWarning (agentsObj) {
    if (dataTimeChecked) return
    dataTimeChecked = true
    if (process.env.BROWSERSLIST_IGNORE_OLD_DATA) return

    // ...
    console.warn(
      'Browserslist: caniuse-lite is outdated. ' +
      'Please run next command `' + command + '`'
    )
    // ...
  }
  // ...
}

То, что сработало для меня, - это сначала построить проект, например

npm run build

затем запустите его как

npm run start

это исчезнет с ошибкой и приложение загрузится нормально.

Другие вопросы по теме