15

我创建了一个使用angular 8 and CLI 8. 我正在尝试构建库,但出现错误。

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"
      }
4

7 回答 7

36

为我解决它的事情正在运行

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.xx 升级到 10.xx 之后,我在我的开发机器和 CI 中都遇到了这个错误,所以删除node_modules并不是package-lock.json一个真正的选择。

于 2021-01-18T22:47:50.643 回答
6

我也看到了这个......像你一样,删除 node_modules 并重新运行 npm install 不起作用。

然而,起作用的是删除 node_modules 并删除 package-lock.json,然后运行 ​​npm i。

试试那个...

安德鲁

于 2019-09-29T22:16:49.987 回答
1

我更新了所有 npm 包,错误消失了。

于 2019-09-30T08:34:26.950 回答
0

试试这个:

1.删​​除整个node_modules目录。

2.从根目录删除package-lock.json。

3.确保在 package.json 中引用了最新的 @angular-devkit 项目:

“@angular-devkit/build-angular”:“^0.801.3”,“@angular-devkit/build-ng-packagr”:“^0.801.3”。

4.关闭并重新打开cmd窗口。

运行 npm 安装。

于 2019-10-31T12:01:19.320 回答
0

可能是由过时的 babel 引起的。尝试使用npx babel-upgrade --write然后更新 babel npx browserslist@latest --update-db

于 2021-05-07T01:32:06.797 回答
0

这可能为时已晚,但我将发布我是如何解决这个问题的,因为我最近(2022 年 2 月下旬)遇到了它,我采用了一种不同的方法,导致对我的项目的更改最小。
我从 StackBlitz 下载的项目遇到了类似的问题,但在我的情况下,未知版本android是 97 而不是 67 或 80。数据库是最新的,删除
目录并运行没有改变任何东西(通过使用比较检查工具),更新项目的依赖造成了更大的麻烦,删除.browserslistnode_modulesnpm installpackage-lock.json

在我的情况下,在项目的根目录中将 98 指定为android(而不是 97)的目标版本.browserslistrc(实际上我必须创建该文件,因为它不存在)。

这就是我发现 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

于 2022-03-02T10:13:02.823 回答
-4

尝试在第924行修改\node_modules\ng-packagr\node_modules\autoprefixer\node_modules\browserslist\index.js如下:

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 []
    }

希望对您有所帮助...这是肮脏的解决方案...

于 2019-10-01T19:55:25.937 回答