BrowserslistError: Unknown version 67 of android
BrowserslistError: Unknown version 67 of android
我使用 angular 8 and CLI 8
创建了一个 angular 库。我正在尝试构建库,但出现错误。
ng build <lib-name>
我已经查看了一些与此错误相关的问题,其中大多数说删除 node_modules
并重新安装。我尝试了此解决方案,但仍然收到以下错误。
[浏览器列表] 无法解析 package.json。忽略它。
ERROR: Unknown version 67 of android
Unknown version 67 of android
BrowserslistError: Unknown version 67 of android
at Function.select (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\node_modules\browserslist\index.js:924:17)
at C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\node_modules\browserslist\index.js:252:33
at Array.reduce (<anonymous>)
at resolve (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\node_modules\browserslist\index.js:234:18)
at browserslist (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\node_modules\browserslist\index.js:353:16)
at Browsers.parse (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\lib\browsers.js:66:12)
at new Browsers (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\lib\browsers.js:48:26)
at loadPrefixes (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\lib\autoprefixer.js:101:20)
at plugin (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\lib\autoprefixer.js:112:20)
at LazyResult.run (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\postcss\lib\lazy-result.js:295:14)
at LazyResult.sync (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\postcss\lib\lazy-result.js:281:26)
at LazyResult.warnings (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\postcss\lib\lazy-result.js:85:17)
at StylesheetProcessor.process (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\lib\ng-v5\entry-point\resources\stylesheet-processor.js:47:16)
at Object.readResource (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\lib\ts\cache-compiler-host.js:73:57)
at TsCompilerAotCompilerTypeCheckHostAdapter.loadResource (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\@angular\compiler-cli\src\transformers\compiler_host.js:495:37)
at Object.get (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\@angular\compiler\bundles\compiler.umd.js:26490:94)
可能是什么问题?此错误是由于 autoprefixer
引起的吗?我应该怎么做才能解决这个问题?
包-lock.json
"ng-packagr": {
"version": "5.5.1",
"resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-5.5.1.tgz",
"integrity": "sha512-GT6QK5WAirQwALdeJPiXdgRd5PzRqcknb/C/G+cCDEbUFri4oGVmns2Nl4I0FGg/cRn6nXTxRiUunOSqZ3Lehw==",
"dev": true,
"requires": {
"ajv": "^6.10.2",
"autoprefixer": "^9.6.0",
"browserslist": "^4.0.0"
},
"autoprefixer": {
"version": "9.5.1",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.5.1.tgz",
"integrity": "sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==",
"dev": true,
"requires": {
"browserslist": "^4.5.4",
"caniuse-lite": "^1.0.30000957",
"normalize-range": "^0.1.2",
"num2fraction": "^1.2.2",
"postcss": "^7.0.14",
"postcss-value-parser": "^3.3.1"
}
我也看到了...像你一样,删除 node_modules 并重新 运行 npm install 无效。
然而,起作用的是删除 node_modules 和删除 package-lock.json,然后 运行 npm i.
试试看...
安德鲁
我更新了所有 npm 包,错误消失了。
尝试修改 \node_modules\ng-packagr\node_modules\autoprefixer\node_modules\browserslist\index.js 行 924 如下:
if (alias) {
version = alias
} else if (context.ignoreUnknownVersions) {
return []
} else {
throw new BrowserslistError(
'Unknown version ' + version + ' of ' + name)
}
在
if (alias) {
version = alias
} else if (context.ignoreUnknownVersions) {
return []
} else {
return []
}
我希望能帮助你...这是肮脏的解决方案...
试试这个:
1.Deleting 整个 node_modules 目录。
2.Deleting package-lock.json 从根目录.
3.Making 确保在 package.json:
中引用了最新的 @angular-devkit 项目
"@angular-devkit/build-angular": "^0.801.3", "@angular-devkit/build-ng-packagr": "^0.801.3".
4.Close 并重新打开 cmd window.
运行 npm 安装。
为我解决的是 运行
npx browserslist --update-db
在项目根目录中。这对 package-lock.json
更新版本 caniuse-lite
进行了更改。
为了提供一些背景信息,我遇到了这个问题,因为我遇到了这个错误:
Compiling TypeScript sources through ngc
ERROR: Unknown version 80 of android
An unhandled exception occurred: Unknown version 80 of android
在我将 angular 从 9.x.x 升级到 10.x.x 之后。
我在我的开发机器和 CI 中都遇到了这个错误,所以删除 node_modules
和 package-lock.json
并不是一个真正的选择。
可能是由过时的 babel 引起的。尝试使用 npx babel-upgrade --write
然后 npx browserslist@latest --update-db
.
更新 babel
这可能为时已晚,但我会 post 我是如何解决这个问题的,因为我 运行 最近(2022 年 2 月下旬)进入了这个问题,并且我遵循了不同的方法对我的项目造成最小更改的方法。
我在从 StackBlitz 下载的项目中遇到了类似的问题,但在我的例子中,android
的未知版本是 97,而不是 67 或 80。
browserslist
数据库是最新的,删除了 node_modules
目录和 运行 npm install
没有改变任何东西(使用比较工具检查),更新项目的依赖关系导致甚至更麻烦,删除 package-lock.json
.
也是如此
在我的案例中有效的是在项目根目录的 .browserslistrc
中指定 98 作为 android
的目标版本(而不是 97)(我实际上必须创建该文件,因为它不存在)。
这就是我发现 98 版有效的方式:
我先临时编辑了异常发生的代码(在node_modules\browserslist\index.js
)。在抛出异常的行之前,我插入了这条语句:
if (name === 'android') {
return arguments.callee(context, name, (version - 1).toString())
}
找到接受的小于 97 的最大数字。然后我 运行 npx browserslist
发现那个版本是 4.
不满意,我通过用这个替换上面的片段来尝试更大的版本号:
if (name === 'android' && Number(version) < 200) {
return arguments.callee(context, name, (Number(version) + 1).toString())
}
幸运的是,98 成功了(运行 npx browserslist
再次验证)。
所以我撤消了对代码的更改,从 npx browserslist
中获取了输出,并将其保存在 .browserslistrc
中(由于另一个错误,我还不得不排除 safari
)。
ng build
命令随后成功执行。
我使用 angular 8 and CLI 8
创建了一个 angular 库。我正在尝试构建库,但出现错误。
ng build <lib-name>
我已经查看了一些与此错误相关的问题,其中大多数说删除 node_modules
并重新安装。我尝试了此解决方案,但仍然收到以下错误。
[浏览器列表] 无法解析 package.json。忽略它。
ERROR: Unknown version 67 of android
Unknown version 67 of android
BrowserslistError: Unknown version 67 of android
at Function.select (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\node_modules\browserslist\index.js:924:17)
at C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\node_modules\browserslist\index.js:252:33
at Array.reduce (<anonymous>)
at resolve (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\node_modules\browserslist\index.js:234:18)
at browserslist (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\node_modules\browserslist\index.js:353:16)
at Browsers.parse (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\lib\browsers.js:66:12)
at new Browsers (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\lib\browsers.js:48:26)
at loadPrefixes (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\lib\autoprefixer.js:101:20)
at plugin (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\node_modules\autoprefixer\lib\autoprefixer.js:112:20)
at LazyResult.run (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\postcss\lib\lazy-result.js:295:14)
at LazyResult.sync (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\postcss\lib\lazy-result.js:281:26)
at LazyResult.warnings (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\postcss\lib\lazy-result.js:85:17)
at StylesheetProcessor.process (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\lib\ng-v5\entry-point\resources\stylesheet-processor.js:47:16)
at Object.readResource (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\ng-packagr\lib\ts\cache-compiler-host.js:73:57)
at TsCompilerAotCompilerTypeCheckHostAdapter.loadResource (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\@angular\compiler-cli\src\transformers\compiler_host.js:495:37)
at Object.get (C:\Users\kaukhare\github\ngx-group-by-alphabates\node_modules\@angular\compiler\bundles\compiler.umd.js:26490:94)
可能是什么问题?此错误是由于 autoprefixer
引起的吗?我应该怎么做才能解决这个问题?
包-lock.json
"ng-packagr": {
"version": "5.5.1",
"resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-5.5.1.tgz",
"integrity": "sha512-GT6QK5WAirQwALdeJPiXdgRd5PzRqcknb/C/G+cCDEbUFri4oGVmns2Nl4I0FGg/cRn6nXTxRiUunOSqZ3Lehw==",
"dev": true,
"requires": {
"ajv": "^6.10.2",
"autoprefixer": "^9.6.0",
"browserslist": "^4.0.0"
},
"autoprefixer": {
"version": "9.5.1",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.5.1.tgz",
"integrity": "sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==",
"dev": true,
"requires": {
"browserslist": "^4.5.4",
"caniuse-lite": "^1.0.30000957",
"normalize-range": "^0.1.2",
"num2fraction": "^1.2.2",
"postcss": "^7.0.14",
"postcss-value-parser": "^3.3.1"
}
我也看到了...像你一样,删除 node_modules 并重新 运行 npm install 无效。
然而,起作用的是删除 node_modules 和删除 package-lock.json,然后 运行 npm i.
试试看...
安德鲁
我更新了所有 npm 包,错误消失了。
尝试修改 \node_modules\ng-packagr\node_modules\autoprefixer\node_modules\browserslist\index.js 行 924 如下:
if (alias) {
version = alias
} else if (context.ignoreUnknownVersions) {
return []
} else {
throw new BrowserslistError(
'Unknown version ' + version + ' of ' + name)
}
在
if (alias) {
version = alias
} else if (context.ignoreUnknownVersions) {
return []
} else {
return []
}
我希望能帮助你...这是肮脏的解决方案...
试试这个:
1.Deleting 整个 node_modules 目录。
2.Deleting package-lock.json 从根目录.
3.Making 确保在 package.json:
中引用了最新的 @angular-devkit 项目"@angular-devkit/build-angular": "^0.801.3", "@angular-devkit/build-ng-packagr": "^0.801.3".
4.Close 并重新打开 cmd window.
运行 npm 安装。
为我解决的是 运行
npx browserslist --update-db
在项目根目录中。这对 package-lock.json
更新版本 caniuse-lite
进行了更改。
为了提供一些背景信息,我遇到了这个问题,因为我遇到了这个错误:
Compiling TypeScript sources through ngc
ERROR: Unknown version 80 of android
An unhandled exception occurred: Unknown version 80 of android
在我将 angular 从 9.x.x 升级到 10.x.x 之后。
我在我的开发机器和 CI 中都遇到了这个错误,所以删除 node_modules
和 package-lock.json
并不是一个真正的选择。
可能是由过时的 babel 引起的。尝试使用 npx babel-upgrade --write
然后 npx browserslist@latest --update-db
.
这可能为时已晚,但我会 post 我是如何解决这个问题的,因为我 运行 最近(2022 年 2 月下旬)进入了这个问题,并且我遵循了不同的方法对我的项目造成最小更改的方法。
我在从 StackBlitz 下载的项目中遇到了类似的问题,但在我的例子中,android
的未知版本是 97,而不是 67 或 80。
browserslist
数据库是最新的,删除了 node_modules
目录和 运行 npm install
没有改变任何东西(使用比较工具检查),更新项目的依赖关系导致甚至更麻烦,删除 package-lock.json
.
在我的案例中有效的是在项目根目录的 .browserslistrc
中指定 98 作为 android
的目标版本(而不是 97)(我实际上必须创建该文件,因为它不存在)。
这就是我发现 98 版有效的方式:
我先临时编辑了异常发生的代码(在node_modules\browserslist\index.js
)。在抛出异常的行之前,我插入了这条语句:
if (name === 'android') {
return arguments.callee(context, name, (version - 1).toString())
}
找到接受的小于 97 的最大数字。然后我 运行 npx browserslist
发现那个版本是 4.
不满意,我通过用这个替换上面的片段来尝试更大的版本号:
if (name === 'android' && Number(version) < 200) {
return arguments.callee(context, name, (Number(version) + 1).toString())
}
幸运的是,98 成功了(运行 npx browserslist
再次验证)。
所以我撤消了对代码的更改,从 npx browserslist
中获取了输出,并将其保存在 .browserslistrc
中(由于另一个错误,我还不得不排除 safari
)。
ng build
命令随后成功执行。