最近,当我编译我的scss文件时,我得到一个错误。错误信息如下:
Browserslist: canius -lite已经过时。请运行下一个命令npm update canius -lite browserslist
首先,正如消息所说,我运行npm update canius -lite browserslist,但它没有解决这个问题。
我删除了整个node_modules目录并重新安装,我也通过npm update更新了整个文件夹,但没有一个解决了这个问题。
我还重新安装了autoprefixer和browserslist,但没有一个解决问题。
如果我移除
"options": {
"autoPrefix": "> 1%"
}
从我的编译配置。Json,一切都很好,这意味着它可能与autoprefixer有关。另外,我手动将包版本更改为包上的最新版本。Json和重新安装,但没有运气。
我也有同样的问题,这个命令对我有用
NPM I autoprefixer@latest
它自动在包中添加需要的依赖项。Json和包锁。Json文件如下:
package.json
"autoprefixer": "^9.6.5",
package-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"
},
...
}
有一个环境变量>= 4.5.4,BROWSERSLIST_IGNORE_OLD_DATA,您可以将其设置为true来抑制警告(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 + '`'
)
// ...
}
// ...
}
正如Scott Kuhl的回答中提到的,这个问题在
https://github.com/madskristensen/WebCompiler/issues/413
对我来说,运行命令npm i canius -lite- browserslist只工作了大约1/2天,就再次出现问题。
下面的解决方案,在帖子中提到,工作得更好。这将更新node.js文件,使其使用console.log而不是console。返回这些错误时发出警告。
您可以手动更新位于
C:\Users\【用户名】当地\ AppData \ \ Temp \ WebCompiler VersionNumber \ node_modules \ browserslist
或者,为了自动完成,将以下内容添加到.csproj文件中:
右键单击项目文件,选择“卸载项目”
编辑.csproj文件
将以下内容粘贴到项目文件中。我将它粘贴到文件的末尾,在</Project>结束标记之前,在导入构建web编译器包之前。
<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>
重新加载项目到解决方案中。