【问题标题】:vue/cli 3 unmet dependenciesvue/cli 3 未满足的依赖项
【发布时间】:2019-01-25 22:45:36
【问题描述】:

我尝试了最新的 vue-cli 3 工具...完整安装 项目设置正确完成,但是一旦我添加了一个新的依赖项,我就会得到一个警告列表,未满足的依赖项......是不是由于纱线(我没有测试 npm..)。无论如何要解决它们?

    $ yarn add vue-i18n
    yarn add v1.9.4
    [1/4] ????  Resolving packages...
    [2/4] ????  Fetching packages...
    [3/4] ????  Linking dependencies...
    warning "@vue/cli-plugin-babel > babel-loader@8.0.0-beta.4" has unmet peer dependency "webpack@>=2".
    warning "@vue/cli-plugin-eslint > eslint-loader@2.1.0" has unmet peer dependency "webpack@>=2.0.0 <5.0.0".
    warning "@vue/cli-plugin-pwa > workbox-webpack-plugin@3.4.1" has unmet peer dependency "webpack@^2.0.0 || ^3.0.0 || ^4.0.0".
    warning "@vue/eslint-config-prettier > eslint-config-prettier@2.10.0" has unmet peer dependency "eslint@>=3.14.1".
    warning " > babel-core@7.0.0-bridge.0" has unmet peer dependency "@babel/core@^7.0.0-0".
    warning " > sass-loader@7.1.0" has unmet peer dependency "webpack@^3.0.0 || ^4.0.0".
    [4/4] ????  Building fresh packages...
    success Saved lockfile.
    success Saved 1 new dependency.
    info Direct dependencies
    └─ vue-i18n@8.0.0
    info All dependencies
    └─ vue-i18n@8.0.0
    ✨  Done in 34.88s.

【问题讨论】:

    标签: vue.js vue-cli vue-cli-3


    【解决方案1】:

    tl;dr:除了webpack 之外可能不是问题(但仍然可能不是问题)。由于webpack 是多个依赖项的对等依赖项,因此由于在不同的依赖项中列出了不同的版本约束,可能会出现非确定性行为。

    发生了什么

    Yarn 提供这些警告是为了防止不同的依赖项需要不同版本的第三个子依赖项,这可能会导致不确定的行为。例如这里,babel-loader、eslint-loader、workbox-webpack-plugin 和 sass-loader 在 webpack 上都有略微不同的版本约束,这意味着如果没有 yarn.lock 文件,版本约束就不能完全预测。要解决此问题,您可以将webpack 添加为项目的显式依赖项,或者您可以将yarn upgrade webpack@x.x.x 添加到您想要的版本,然后依靠您的yarn.lock 来指定此版本。

    解决方案

    在您的特定情况下,您应该担心的唯一对等依赖项是 webpack,因为所有其他依赖项仅由单个依赖项需要。但是,如果您对这些警告不采取任何措施,则可能不会出现任何问题。

    理想情况下,这应该由 Vue 在vue create 过程中通过将webpack 添加到package.json 来解决,但是由于我能够在我的最终重现此错误,我猜他们还没有解决它。如果还没有人这样做,我会鼓励你create an issue。

    有关对等依赖项的更多信息

    当项目维护者认为使用包时可能出现依赖冲突时,可以在项目的package.json 中指定对等依赖项。例如,如果您访问package.json 以获取@vue/cli-plugin-babel,那么您将看到webpack@&gt;=2 列在peerDependencies 部分中。编写这个 Vue 插件的人可能会添加 webpack 作为对等依赖项,因为他们知道 webpack 的受欢迎程度,并想警告用户此插件使用 webpack 以帮助他们处理潜在的冲突。

    虽然使用npm 而不是yarn 编写,我发现this article 提供了一些有用的建议,用于处理对等依赖关系和对等依赖关系警告。

    【讨论】:

    • 这是yarn 问题,而不是vue-cli 问题。见:github.com/yarnpkg/yarn/issues/1503
    • @Derek Eh,在一定程度上。如果Vue 应该构建代码库并生成package.json,它应该适当地添加必要的对等依赖项。我不知道yarn 自己如何知道如何选择对等依赖项的正确版本,该对等依赖项具有来自不同依赖项的不同版本约束。
    • npm 上不会出现这些问题
    • 非常感谢这个完整的答案......我将摆脱纱线并重新使用 npm,直到这个问题得到解决
    • @erwin 不用担心!仅供参考,我在npm 进行了测试,但我仍然收到警告:$ npm install npm WARN ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed. You must install peer dependencies yourself. npm WARN eslint-plugin-cypress@2.0.1 requires a peer of eslint@&gt;= 3.2.1 but none is installed. You must install peer dependencies yourself.
    猜你喜欢
    • 2020-09-11
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 2016-08-29
    • 2018-02-25
    • 1970-01-01
    相关资源
    最近更新 更多