В последнее время, когда я компилирую файлы 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 и переустановил, но безуспешно.

Похоже, вы используете расширение веб-компилятора Visual Studio. Здесь есть открытая проблема: https://github.com/madskristensen/WebCompiler/issues/413.
В этой проблеме опубликован обходной путь:
C:\Users\USERNAME\AppData\Local\Temp\WebCompilerX.X.X (X — это версия WebCompiler)node_modules следующие папки: caniuse-lite и browserslist
Откройте CMD (внутри C:\Users\USERNAME\AppData\Local\Temp\WebCompilerX.X.X) и запустите: npm i caniuse-lite browserslistПохоже на другую проблему. Если у вас есть ссылка на ваш проект в Интернете или вы можете собрать другой проект, в котором есть проблема, я был бы рад взглянуть на него.
Кажется, когда я пытался решить проблему, обновляя и переустанавливая автопрефиксер, я что-то сломал. К счастью, сегодня веб-компилятор обновился, и я снова увидел это сообщение об ошибке. Я выполнил шаги, описанные выше, и на этот раз проблема устранена.
Любая идея, где этот каталог находится на Mac?
Как упоминалось в ответе Скотта Куля, эта проблема упоминается в 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 следующее:
</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>
Спасибо! Это было лучшее решение для меня. Вышеупомянутые исправления устаревают через день!
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 работал быстро и решил ошибку в моем случае.
@AlexandrNil Спасибо, братан, это решило проблему для меня!
Я получаю неизвестную версию 62 op_mob. Интересно, является ли это частью проблемы.
Продолжение ответ выше.
Была та же «ошибка плагина», что и у @MehrdadBabaki. Я удалил веб-компилятор, удалил упомянутую выше папку AppData WebCompiler, затем снова открыл VS2019 и переустановил веб-компилятор.
ТОГДА я снова зашел в папку WebCompiler и сделал npm i autoprefixer@latestnpm i caniuse-lite@latest и npm i caniuse-lite browserslist@latest
просто обновите автопрефиксер, caniuse-lite, browserslist мне подходит
Я нашел короткий путь, вместо того, чтобы проходить vs code appData/webCompiler, я добавил его как зависимость к моему проекту с помощью этой командыnpm i caniuse-lite browserslist. Но вы можете установить его глобально, чтобы не добавлять его в каждый проект.
После установки вы можете удалить его из своего проекта package.json и сделать npm i.
Обновлять:
В случае, если вышеприведенное решение не помогло. Вы можете запустить npm update, так как это обновит устаревшие/устаревшие пакеты.
Примечание:
После запуска обновления npm могут отсутствовать зависимости. Отследите ошибку и установите недостающие зависимости. У меня был nodemon, который я исправил npm i nodemon -g
У меня не было папки /WebCompiler в моей папке /TEMP, как предлагалось в некоторых других сообщениях, поэтому я запустил эту командную строку, и, похоже, проблема устранена.
У меня была такая же проблема, эта команда работает для меня
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.
Добро пожаловать в СО! Когда вы публикуете ответ, даже если он правильный, попробуйте немного объяснить.
Это неплохой ответ ... просто немного отредактируйте его и готово.
Я не совсем уверен, в чем была моя проблема, но я думаю, что это было из-за того, что я использовал одни и те же глобальные пакеты как из 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
Чтобы решить эту проблему, вы можете ввести следующую команду:
'npm -g update'
Удаление node_modules, package-lock.json и npm i решает проблему для меня.
удаление package-lock.json может привести к некоторой ошибке критических изменений, если у вас есть длинная история установки пакета, например, проект, который работал и разрабатывался более года и имеет пакеты, которые имеют много зависимостей 3-го уровня, может сделать критические изменения
Я исправил эту проблему, шаг за шагом:
node_modulespackage-lock.json,npm --depth 9999 updatenpm installБудьте осторожны с удалением package-lock.json, так как это может привести к критическим изменениям, и этого следует избегать.
Если вы используете пряжу:
yarn upgrade
Помогите мне
Попробуйте это, это решило мою проблему npx browserslist@latest --update-db
Для контекста: моя IDE — это VS Code, и мой проект JS включал только Parcel, react и react-dom, когда я начал видеть эту ошибку. Ни один из вышеперечисленных вариантов не сработал. Это решение исправило мое.
Сбой в 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 ```
Что такое npx? Чем он отличается от npm?
@Marquizzo npx — это способ напрямую выполнить пакет npm, не сохраняя его в вашей системе.
Источник объяснений находится в разделе «Обновление данных браузеров» на главной странице браузера npm: npmjs.com/package/browserslist.
Некоторая информация о том, что делает --update-db : обновляет базу данных caniuse-lite с помощью браузеров. Со всеми данными последние 2 версии или> 1% вернут старые браузеры, а Autoprefixer/Babel будет вставлять полифиллы для браузеров, которые в настоящее время никто не использует. Другим вариантом будет запуск обновления npm, но он обновит все ваши зависимости, что заставит вас запустить полный процесс контроля качества.
Потрясающий бхаи. Я столкнулся с двумя другими проблемами, но вы решили их все за один раз. :-) Однако есть лишь небольшая разница в @latest, но ваш ответ решил и эту проблему: stackoverflow.com/questions/58155525/…
Я выполнил эту команду, рекомендованную nx. Теперь все мои npm-скрипты завершаются с Unknown version 62 of op_mob. Кто-нибудь вернул эту ошибку?
Обратите внимание, что это не только для NPM! Эта команда работает и с Yarn. Выдергивание из их ридми: updates caniuse-lite version in your npm, yarn or pnpm lock file.
Где мне запустить эту команду, когда я просто запускаю ее в корне, он говорит, что package.json не может быть найден.
удалить каталог node_modules/browserslist в проекте
сейчас
npm run build
больше не генерирует это сообщение
Если вы только что удалили каталог, что произойдет в следующий раз, когда вы npm install/npm ci?
на самом деле я столкнулся с проблемой с перфиксом css, наконец, я обновил приложение create-create-app для этого проекта, и все было хорошо.
Многие советуют удалить package-lock.json или yarn.lock. Это явно плохая идея!
Я использую Yarn, и мне удалось исправить эту проблему, удалив только записи caniuse-db и caniuse-lite в моем yarn.lock и выполнив yarn.
Нет необходимости нарушать основную функцию файла блокировки, удаляя его.
Такой же. У меня не было caniuse-db в yarn.lock, но у меня было две записи для caniuse-lite. Удалил их обоих, а затем снова yarn installed. Работал как шарм.
Это единственный способ, если все другие методы не помогли. Я застрял в этом на несколько часов, спасибо за это
Ответ от @Alexandr Nil безопасен и эффективен для меня. Я пишу как полный ответ, потому что его комментарий легко пропустить.
npm --depth 20 update --save caniuse-lite browserslist
Это хорошо, потому что:
Нет удаления package-lock.json. Удаление этого сделало бы вас уязвимыми для многих пакетов, которые будут обновлены с критическими изменениями, и у вас будет гораздо большая головная боль, чем раньше!
Легко понять, что именно он делает, потому что он явный и очень ограничен в отношении того, что должно быть обновлено.
Это позволяет избежать очень большой глубины 99 или 9999, которая будет работать на некоторых проектах и системах, но не на других. Если вы ограничили глубину слишком маленьким числом, это ничего не сломает. Вы можете увеличить глубину и повторить попытку, пока проект не будет успешно скомпилирован. Я не знаю, действительно ли мне нужно было 20, или я мог бы справиться с меньшей глубиной, например, 5 или 10. Но с глубиной 20 мне понадобилось меньше минуты, чтобы пробежаться.
Это быстро и легко!
Спасибо @Zbyszek за предложение добавить опцию «--save». И да, --depth в настоящее время устарел, но я предполагаю, что они заменят его чем-то другим, а не полностью удалят, поэтому на данный момент это кажется наименее разрушительным подходом.
В настоящее время --depth устарел и просто не влияет на работу обновления. См. реализованный RFC0019. Также может потребоваться добавить --save в некоторых случаях, например, в локальной папке node_modules. В противном случае - хороший ответ, мне нравится этот способ больше, чем удаление папок (что может стать плохим способом сделать это).
Следующие шаги сработали для меня
rm -rf node_modules/yarnyarn upgrade caniuse-lite browserlistСуществует переменная среды >= 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
это исчезнет с ошибкой и приложение загрузится нормально.
Я сделал это, и у меня больше нет этой ошибки, но я получил новую ошибку: Ошибка плагина: не удается найти модуль «автопрефиксер». Я попытался переустановить и обновить autoprefixer, но все равно получаю эту ошибку.