21

我已经更新了我的项目以使用最新版本的 node 和 yarn,在这次升级之后,现在我的 react 项目不想使用“browserslist”。

我运行“yarn start”并得到这个错误:

./src/assets/css/material-dashboard-react.css?v=1.2.0 (./node_modules/css-loader??ref--6-oneOf-3-1!./node_modules/postcss-loader/src??postcss!./src/assets/css/material-dashboard-react.css?v=1.2.0)
BrowserslistError: Unknown browser kaios
    at Array.reduce (<anonymous>)
    at Array.some (<anonymous>)
    at Array.filter (<anonymous>)
    at new Promise (<anonymous>)

我有以下版本:

  • 节点 v10.15.3
  • npm 6.9.0
  • 纱线 v1.15.2

而我的 package.json 它

{
  "name": "frontend",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@material-ui/core": "3.9.3",
    "@material-ui/icons": "3.0.2",
    "axios": "0.18.0",
    "classnames": "2.2.6",
    "html2canvas": "^1.0.0-alpha.12",
    "immutable": "3.8.2",
    "jspdf": "^1.4.1",
    "jspdf-autotable": "^2.3.5",
    "moment": "2.22.2",
    "npm-run-all": "4.1.5",
    "perfect-scrollbar": "1.4.0",
    "plotly.js": "1.47.1",
    "react": "^16.6.3",
    "react-currency-format": "1.0.0",
    "react-dates": "18.2.2",
    "react-dom": "^16.6.3",
    "react-excel-workbook": "0.0.4",
    "react-google-maps": "9.4.5",
    "react-plotly.js": "2.3.0",
    "react-redux": "6.0.0",
    "react-router": "4.3.1",
    "react-router-dom": "4.3.1",
    "react-scripts": "2.1.8",
    "react-select": "2.1.2",
    "react-swipeable-views": "0.13.1",
    "redux": "4.0.1",
    "redux-immutable": "4.0.0",
    "redux-persist": "5.10.0",
    "redux-thunk": "2.3.0",
    "weather-icons": "^1.3.2"
  },
  "scripts": {
    "start": "react-scripts --max-old-space-size=8192 start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "browserslist": [
    ">1%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}

对我来说,它与 css-loader 有关的问题,我尝试解决问题并将 css-loader@2.1.1 添加到 package.json。我尝试使用其他解决方案,但没有一个有效。

4

5 回答 5

32

TL;博士 rm yarn.lock; yarn

长文:

两者都browserslist可能postcss-preset-env是第二级(深层)依赖项。这是很常见的create-react-app。但是,yarn upgrade不会升级锁定的子依赖项,并且执行此操作的命令违反了纱线的理念。

可以说,这些库之一应该限制所需的依赖版本,并将其留给 yarn 来解析好的版本。如果是这样,那就对了yarn

可以通过使项目的一些{browserslist, caniuse-lite, postcss-preset-env}直接 [dev] 依赖项来解决此问题。

或者,更短一点,rm yarn.lock; yarn✨</p>

参考:

于 2019-04-24T09:50:29.667 回答
5

我遇到了同样的问题,通过修复之前的版本caniuse-litepackage.json最后一个版本,我能够解决这个问题。

附加到package.json

  "resolutions": {
    "caniuse-lite": "1.0.30000957"
  },

$ yarn

并检查yarn.lock是否使用了预期的版本:

...
caniuse-lite@1.0.30000957, caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000939, caniuse-lite@^1.0.30000955, caniuse-lite@^1.0.30000957:
  version "1.0.30000957"
  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz#fb1026bf184d7d62c685205358c3b24b9e29f7b3"
  integrity sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ==
...
于 2019-04-16T01:16:35.453 回答
4

我查看了代码,这是因为更新了caniuse对 Kai OS 的支持查询(我猜是印度的一些移动操作系统?)所以如果你postcss-preset-env今天添加并且caniuse-lite之前安装了一些软件包的依赖项,你可能会遇到错误

tl;博士删除 node_modules 并锁定,然后再次安装所有依赖项

于 2019-04-15T08:49:22.483 回答
1

对于那些升级到 Create React App 3 的人来说,这个错误是由不兼容browserslist@<4.5.5caniuselite@>1.0.30000957一起运行引起的。

运行npm ls browserslist以查看旧版本的browserslist安装位置并升级那些依赖于的软件包browserslist

Yarn 用户可以通过遵循提供的一些现有答案来解决这个问题。

我是 NPM 用户,通过安装browserslist@^4.5.5为根依赖项解决了这个问题,因此传递browserslist依赖项被重复删除到根。

于 2019-04-26T17:30:02.910 回答
1

我今天也遇到了这个错误。似乎这个问题与postcss-preset-env. 从 postcss 插件列表中删除它解决了我的问题。

我决定留下来autoprofixerpostcss-custom-properties不是postcss-preset-env

于 2019-04-15T07:32:01.440 回答