我最近开始在我正在处理的一个Angular 8项目(node v10.16.0)中遇到这个错误。运行npm update caniuse-lite browserslist什么也不做
所以我删除了package-lock.json,删除了node_modules并运行了npm install,但是浏览器列表文件已经没有了。同样,当我运行ng build时,我得到相同的消息: Browserslist: caniuse-lite已过时。请运行下一个命令npm update
我在同一主题上看到了这篇文章:Browserslist: caniuse-lite is outdated. Please run next command npm update caniuse-lite browserslist,它谈到了WebCompiler和自动修复,而我对此一无所知。请指点
发布于 2020-01-07 17:48:42
通过运行以下命令解决了caniuse-lite过时的问题。
npm cache clean # optional
npm install caniuse-lite@latest --save发布于 2020-01-08 06:26:51
TLDR:(在没有解释的情况下可能看起来与直觉相反)
npm install caniuse-lite browserslist
npm uninstall caniuse-lite browserslist解释:
此警告消息("canisuse-lite已过期,请....")如果发现安装的caniuse-lite版本比当前版本的2个版本旧,则在构建/启动期间由browserslist中的脚本输出。如果您的项目中没有任何更改,并且在启动或构建项目时突然看到此msg,则可能意味着有对caniuse-lite的最新版本更新。
不幸的是,只有在安装caniuse-lite作为项目的依赖项时,browserslist显示的文本msg才有用。很有可能,你没有。因此,当您运行建议的'npm update caniuse-lite‘或'npm update 'caniuse-lite@latest’(或'npm install')时,npm不会在您的package.json依赖项中看到该包,因此它会忽略该请求。
那么这些包是如何成为依赖关系的呢?当你的项目被创建时(可能是使用app angularapp或者create-react-app或者类似的框架),npm安装的浏览器列表是作为它所需要的工具的依赖项,而不是作为你的项目的依赖项。同时,安装了caniuse-lite作为browserslist的依赖项。稍后,当项目更新时,会创建一个package-lock.json文件,该文件将所有依赖项锁定到特定版本。
如果您能够更新package-lock.json中依赖项列表中的版本信息,那么运行'npm install‘将更新node_modules中的这些包。不能手动编辑package-lock.json。相反,最好的方法是:
除了将包更新到最新版本之外,这还会更新caniuse中的依赖项列表,并且(最重要的是)将这些包作为项目的直接依赖项来卸载:npm package-lock.json.
由于这些包由其他依赖项使用,因此不会从node_modules中删除它们。只有package.json会被更新,将它们作为一个项目dependency.
https://stackoverflow.com/questions/59362510
复制相似问题