npm对等依赖解析条件WARN vs ERR



我有两个项目有同样的问题,但不清楚为什么npm解决它们不同:

  1. https://github.com/Sairyss/domain-driven-hexagon
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: domain-driven-hexagon@2.0.0
npm ERR! Found: slonik@31.4.2
npm ERR! node_modules/slonik
npm ERR!   slonik@"^31.2.4" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer slonik@"27 - 29" from @slonik/migrator@0.11.3
npm ERR! node_modules/@slonik/migrator
npm ERR!   @slonik/migrator@"^0.11.3" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
  • https://github.com/ddd-by-examples/library-nestjs
  • npm WARN ERESOLVE overriding peer dependency
    npm WARN While resolving: rxjs-for-await@0.0.2
    npm WARN Found: rxjs@7.4.0
    npm WARN node_modules/rxjs
    npm WARN   rxjs@"^7.0.0" from the root project
    npm WARN   5 more (@nestjs/common, @nestjs/config, @nestjs/core, ...)
    npm WARN
    npm WARN Could not resolve dependency:
    npm WARN peer rxjs@"^6.0.0" from rxjs-for-await@0.0.2
    npm WARN node_modules/rxjs-for-await
    npm WARN   rxjs-for-await@"0.0.2" from @nrwl/node@13.2.2
    npm WARN   node_modules/@nrwl/node
    npm WARN   1 more (@nrwl/tao)
    npm WARN
    npm WARN Conflicting peer dependency: rxjs@6.6.7
    npm WARN node_modules/rxjs
    npm WARN   peer rxjs@"^6.0.0" from rxjs-for-await@0.0.2
    npm WARN   node_modules/rxjs-for-await
    npm WARN     rxjs-for-await@"0.0.2" from @nrwl/node@13.2.2
    npm WARN     node_modules/@nrwl/node
    npm WARN     1 more (@nrwl/tao)
    

    它们都与根项目依赖冲突,但是第一个项目用ERR(无法解析依赖树)解决,第二个项目用WARN(覆盖对等依赖)解决

    第一个例子有两个条件不能同时为真:slonik@31.4.2slonik@"27 - 29"。没有两个包都可以使用的slonik版本,而且npm不能用同一个包的两个不同版本来构建依赖树。它具有解析为满足所有需求的一个版本,如果不能做到这一点,那么它将失败并抛出错误。因为slonik@"27 - 29"指定了它接受的版本的上限,npm假设版本30+是已知不能工作的,而不仅仅是不知道不能工作。

    第二个例子有两个需求(令人困惑)也不一致:rxjs@"^7.0.0"rxjs@"^6.0.0"。插入符号表示允许使用任何次要版本或有错误修复的版本,但不允许使用新的主要版本——因此一个要求是版本7.x。另一个用于版本6.x.y。但是,由于第二个依赖项没有设置上限,所以npm会尝试解决这个问题,并使用更高的版本号。这可能会导致错误,这就是为什么会有警告,但不能保证会破坏。

    你可以在这里阅读更多关于npm和语义版本控制的内容。

    由于第一个示例有一个来自项目根的依赖项,您可以简单地将您正在使用的slonik版本更改为^29.0.0,或者(最好)寻找使用slonik最新版本的@slonik/migrator的最新版本。

    相关内容

    • 没有找到相关文章

    最新更新