浏览器列表:caniuse-lite 已过时。请 运行 下一个命令 `npm update caniuse-lite browserslist`

Browserslist: caniuse-lite is outdated. Please run next command `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 更新了整个文件夹,但是 none 解决了这个问题。 我还重新安装了 autoprefixer 和 browserslist,但其中 none 解决了问题。

如果我删除

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

从我的 compilerconfig.json 来看,一切正常,这意味着它可能与 autoprefixer 有关。另外,我手动将软件包版本更改为 package.json 上的最新版本并重新安装,但没有成功。

听起来您正在使用 Visual Studio 的 Web 编译器扩展。这里有一个未解决的问题: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-litebrowserslist 打开 CMD(在 C:\Users\USERNAME\AppData\Local\Temp\WebCompilerX.X.X 内)和 运行:npm i caniuse-lite browserslist

如 Scott Kuhl 的回答中所述,此问题在 https://github.com/madskristensen/WebCompiler/issues/413

对我来说,运行 命令 npm i caniuse-lite- browserslist 只工作了大约 1/2 天就再次出现问题。

post 中提到的以下解决方案效果更好。这会更新 node.js 文件,以便它在返回这些错误时使用 console.log 而不是 console.warn

您可以手动更新位于 C:\Users\[用户名]\AppData\Local\Temp\WebCompiler[版本号]\node_modules\browserslist

或者,为了自动完成,将以下内容添加到您的 .csproj 文件中:

  1. 右键单击项目文件并 select "Unload Project"
  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.log" />
    </Target>

  1. 将项目重新加载回解决方案。

npm --depth 9999 update 为我解决了这个问题——显然是因为 package-lock.json 坚持使用过时的版本。

的延续。

与@MehrdadBabaki 有相同的 "plugin error"。我卸载了web编译器,删除了上面提到的AppData WebCompiler文件夹,然后重新打开VS2019,重新安装web编译器。

然后我再次进入 WebCompiler 文件夹并执行 npm i autoprefixer@latest npm i caniuse-lite@latestnpm i caniuse-lite browserslist@latest

我找到了一条捷径,而不是通过 vs code appData/webCompiler,我使用此命令 npm i caniuse-lite browserslist 将其添加为我的项目 的依赖项。但是你可以全局安装它以避免将它添加到每个项目。

安装后,您可以将其从项目中删除 package.json 并执行 npm i

更新:

以防万一,以上解决方案未能解决问题。您可以 运行 npm update,因为这会升级 deprecated/outdated 个包。

注:

运行 npm 更新后,可能缺少依赖项。跟踪错误并安装缺少的依赖项。我的是 nodemon,我通过 npm i nodemon -g

修复

我也有同样的问题这个命令对我有用

npm i autoprefixer@latest

它会自动在 package.jsonpackage-lock.json 文件中添加需要依赖项,如下所示:

package.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 时,此错误停止。这个错误发生在我的本地环境中,但在生产和暂存中,它没有发生。在 prod 和 staging 节点版本是 10.x 所以我只是这样做并且我不需要更新我的 package.json

中的任何包

我不确定我的问题出在哪里,但我相信这是因为我使用了来自 npm 和 Yarn 的相同全局包。

我卸载了所有的 npm 全局包,然后再次使用 yarn 命令时,问题消失了。

要查看已安装的全局包...

对于 npm:

npm ls -g --depth=0

对于纱线:

yarn global list

然后我卸载了我在 npm 列表中看到的每个包,使用:

npm uninstall -g <package-name>

对于 Angular 开发人员

虽然,我很晚才回答这个问题。我有一个坏习惯,就是检查我使用的每个库的变更日志,并在检查 Angular CLI 的发行说明时,我发现他们昨天(2020 年 1 月 9 日)发布了一个新补丁,解决了这个问题。

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

因此,当您 运行 ng update 时,您应该获得 @angular/cli 的更新:

并且 运行ning ng update @angular/cli 将修复此警告。

干杯!

就我而言,我从 node_modules.

中删除了 caniuse-litebrowserslist 文件夹

然后我输入以下命令来安装软件包。

npm i -g browserslist caniuse-lite --save

工作正常。

要解决此问题,您可以键入以下命令:

'npm -g update'

删除 node_modulespackage-lock.json 以及 npm i 解决了我的问题。

我已经通过以下步骤解决了这个问题:

  1. 删除 node_modules
  2. 删除 package-lock.json
  3. 运行 npm --depth 9999 update
  4. 运行 npm install

如果你使用纱线:

yarn upgrade

帮帮我

试试这个它解决了我的问题npx browserslist@latest --update-db

对我当前项目有用的最小解决方案

  • 一个create-react-app项目
  • Ubuntu / *nix
  • 2020
  • 节点 14.7

删除项目中的node_modules/browserslist目录

现在

npm run build

不再生成该消息

许多人建议您删除 package-lock.jsonyarn.lock。这显然是个坏主意!

我正在使用 Yarn,我能够通过仅删除 yarn.lock 中的 caniuse-dbcaniuse-lite 条目并执行 yarn 来纠正这个问题。 =16=]

没有必要通过删除来破坏锁文件的主要功能。

简单、安全的解决方案

@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 目前已被弃用,但我认为他们会用其他东西替换它而不是完全删除它,所以目前这似乎是破坏性最小的方法。

以下步骤对我有用

  1. rm -rf node_modules/
  2. yarn
  3. yarn upgrade caniuse-lite browserlist
  4. 正在重启服务器并清除浏览器缓存。

有一个环境变量 >= 4.5.4,BROWSERSLIST_IGNORE_OLD_DATA,您可以设置 truthy 来抑制警告 (BROWSERSLIST_IGNORE_OLD_DATA=true)。请参阅提交 Add BROWSERSLIST_IGNORE_OLD_DATA environment variable.

这是该提交的相关代码片段,显示了检查此环境变量后的早期救助:

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

这将消除错误并正常加载应用程序。

我降级节点版本,然后重新安装节点模块,问题消失了。在我的例子中,从 17.X 到 14.5.0