为什么 yarn 在我的一举一动中都发出警告?

Why yarn is warning in every move I made?

每当我 运行 yarn global add ...yarn global remove ... 时,它都会发出警告,例如...

warning "nativescript > marked-terminal@3.1.1" has incorrect peer dependency "marked@^0.4.0 || ^0.5.0".
warning "nativescript > nativescript-preview-sdk > tslint@5.4.3" has unmet peer dependency "typescript@>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev".
warning "nativescript > nativescript-preview-sdk > tslint > tsutils@2.29.0" has unmet peer dependency "typescript@>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev".

yarn add ...yarn remove ... 命令发出诸如 ...

之类的警告
warning " > babel-loader@8.0.6" has unmet peer dependency "webpack@>=2".
warning "nativescript-dev-webpack > ts-loader@5.4.5" has unmet peer dependency "typescript@*".
warning " > vue-loader@15.4.2" has unmet peer dependency "css-loader@*".

如何解决这些依赖问题?

注意:看来yarn upgradeyarn cache clean也无济于事

yarn(但如果您使用 npm 作为客户端,它会是一样的)警告您未满足的对等依赖项。 Peer dependencies 与您通常的依赖项的不同之处在于安装模块将 不会 安装其对等依赖项,隐含的假设是您已经拥有它们,或者无论如何都需要它们来使用那个包裹。

例如,babel-loader 显然需要使用 Webpack,而不是将其作为传递依赖项引入,它希望您将其包含在 package.json 中。

有几种情况无法按预期工作:

  • 一个包需要一个版本的对等依赖,但你有一个不兼容的版本号(尽管它可能仍然有效)
  • 一个包可能会列出一个你真的不需要的对等依赖 - 例如 eslint-config-react-app 需要 eslint-plugin-flowtype 的对等依赖,如果你不使用 Flow,那是没有意义的。

如何解决这个问题?通过将这些依赖项添加到您的项目中。