【发布时间】:2016-08-20 18:16:18
【问题描述】:
仅供参考:我对 npm 语义版本控制的理解来自 the npm docs 和 this article。
我在一个有很多依赖项的项目中将 React 从 0.13.3 版本升级到 0.14.8。当我运行 'npm install' 时,我希望指定 React@0.14.8 不满足的版本兼容性的包会出现 peerDependency 错误。
...相反,我收到将 React 列为 peerDependency 的每个依赖项的错误,即使 v0.14.8 满足 peerDependency semver 规范:
检查第一个包抛出的错误:react-color-picker 2.1.9 想要一个大于或等于 0.12.0 的 React 版本。这是在 react-color-picker 的 package.json 中指定的:
...但是 0.14.8 确实大于 0.12.0。那么为什么会抛出这个错误呢?
此外,即使我手动修改这些问题包的 React peerDependency 规范之一以“想要”我提供的版本(v0.14.8),npm 仍然会为该包引发 peerDependency 错误:
将 'react-color-picker' package.json peerDependency 规范更改为:
什么?
编辑 1: 这个问题并没有阻碍项目。手动将导致错误的软件包升级到最新版本实际上消除了错误。但是我想知道如果 peerDependency 规范没有任何明显的问题,为什么 npm 首先会抛出这些错误。
...此外,如果它提供更多洞察力,这里是 package.json 文件:
编辑 2: 虽然它肯定不能解决任何问题,但可以通过从错误包的 package.json 中删除 react peerDependency 规范来消除个别错误,如下所示:
...然而,在这样做之后,尽管响应 peerDependency 规范看起来应该可以工作,但仍然出错的包仍然出错。
【问题讨论】:
-
您可以尝试最新版本的 nodejs 和 npm。它看起来像一个错误。否则,更新 React 后,您是否尝试过一次重新安装所有模块?可以分享一下 package.json 的配置吗?
-
重新node和npm:项目到了升级node和npm都不是小菜一碟的地步,所以想看看有没有别的选择。 React 升级后立即重新安装:尝试过; npm 仍然会抛出相同的错误。
-
这可能是全局安装和本地安装的版本不同。检查您在全局和本地安装的版本,然后确保对等依赖项安装在同一 node_modules 目录中。
-
在你的第一个屏幕截图中,react-waypoint 似乎想要使用 react@0.13.x,如果你使用的是 0.14.8,这将是一个问题。 react-dnd 和 react-select 也一样。
-
@KCaradonna:检查了全局和本地版本,所有版本都符合预期。 (即,这似乎不是问题。)如果我从他们的 package.json 中删除 React peerDependency 规范,则重新 react-waypoint、react-dnd 和 react-select,其他包仍然会抛出相同的错误。 (在原始问题中没有提到这一点,现在对其进行编辑以反映这一点。)
标签: reactjs npm semantic-versioning