Javascript 适当的降级机制

Javascript 适当的降级机制,javascript,node.js,npm,react-native,Javascript,Node.js,Npm,React Native,我的情况是: 我有一个react本地项目的工作副本,该项目运行良好。将其提交到我的git存储库 我决定将react native升级到0.26.3,然后升级到0.28,最后由于冲突导致依赖关系混乱。所以决定回到以前的工作版本。恢复了更改。从我的工作目录中删除了node_modules文件夹 但是现在npm安装不起作用了 我在package.json中的工作依赖项 "dependencies": { "immutable": "^3.8.1", "key-mirror": "^

我的情况是:

我有一个react本地项目的工作副本,该项目运行良好。将其提交到我的git存储库

我决定将react native升级到0.26.3,然后升级到0.28,最后由于冲突导致依赖关系混乱。所以决定回到以前的工作版本。恢复了更改。从我的工作目录中删除了node_modules文件夹

但是现在npm安装不起作用了

我在package.json中的工作依赖项

  "dependencies": {
    "immutable": "^3.8.1",
    "key-mirror": "^1.0.1",
    "react": "^15.0.2",
    "react-native": "^0.26.0",
    "react-native-router-flux": "^3.26.1",
    "react-redux": "^4.4.5",
    "redux": "^3.5.2",
    "redux-thunk": "^2.1.0",
    "strformat": "0.0.7"
  },
  "devDependencies": {
    "babel-core": "^6.10.4",
    "babel-jest": "^12.1.0",
    "babel-preset-es2015": "^6.9.0",
    "babel-preset-react-native": "^1.9.0",
    "babel-register": "^6.9.0",
    "chai": "^3.5.0",
    "fetch-mock": "^4.5.4",
    "jest-cli": "^12.1.1",
    "mocha": "^2.5.3",
    "mockery": "^1.7.0",
    "nock": "^8.0.0",
    "redux-mock-store": "^1.1.1",
    "sinon": "^1.17.4",
    "sinon-chai": "^2.8.0",
    "sinon-stub-promise": "^2.0.0"
  }
现在我明白了

npm ERR! peerinvalid The package react@15.1.0 does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer react-native@0.26.3 wants react@15.0.2
npm ERR! peerinvalid Peer react-redux@4.4.5 wants react@^0.14.0 || ^15.0.0-0
这对我来说毫无意义,因为我的react依赖项是15.0.2,而react原生依赖项是0.26.0,正如您在package.json中看到的那样

请注意,这是以前的一次提交(整个批次)的结果。 我还做了一个
npm-ls
。树中显示了异常错误的依赖项,如
react native
react native router flux
react
的错误版本


尝试
npm-prune
,然后再次尝试
npm-i


命令
npm prune
基本上将删除所有不需要的软件包,
npm i
将确保安装所有丢失的软件包。

请将package.json中的
react
依赖项显式更新为
15.0.2
,不是
^15.0.2
,因为后者解析为
15.1.0
,导致此问题。建议在下次升级并再次出现此错误之前保持此状态(以避免
react
同时更改其版本和
react native
未准备好)


此外,使用npm3
ePERINVALID
不再是一个错误,而是一个警告。

对于现有项目,如果您想安装/降级到较低版本

npm install react-native@x.x.x  ex: npm install react-native@0.43.4
这将安装指定的版本


使用react-native检查已安装的版本--version

如果您使用react-native,则可以使用所需的版本修改package.json文件,然后删除所有节点模块rm-rf节点_模块,然后重新安装npm install

Update 2020 快跑

npm install react-native@0.43.8

用您需要的版本替换
0.43.8

降级React Native需要手动步骤。我建议使用。这是我的步骤

  • 将当前版本设置为基本版本,并选择react native的上一个次要版本(您应该一次降级一个版本,使用此方法从0.61.x降级到0.59.x或更低版本不是很容易)
  • 恢复对“比较”视图中显示的文件所做的所有更改
  • 删除node_modules文件夹,清除watchman,重置metro缓存,清除ios缓存文件和Android缓存文件
  • 纱线
    npm安装
  • 测试iOS和Android版本是否都正常工作
  • (如果需要)重复这些步骤以降级到另一个较低版本


  • 重要提示:如果要降级多个版本,则应一次降级一个版本。例如,从0.61.x降级到0.58.x,应该首先升级到0.60.x版本,测试它在iOS和Android中是否工作,然后继续并降级到0.59.x版本,如果您在
    Package.json
    中更改版本并重新安装
    npm packages
    ,它将产生构建错误。请将降级/升级到特定的版本。

    您不能从源代码管理还原更改吗?我做了。还原后,我必须安装
    npm install
    从源代码管理还原后,请让我知道这是否解决不了您的问题hi,不,它没有解决问题。我还做了
    rm-rf~/.npm
    npm缓存清除
    。绝对没有帮助。你能从本地删除整个项目吗。。把它拉回来,做新的npm i。。逻辑上没有意义,但你永远不知道它可能会解决你的问题,也徒劳地尝试了。我不知道还有什么要做。升级前尝试签出几个提交。如何正确地降级,不仅是项目特定的,而且是全局的?有办法吗?这只是局部的?如何在全球范围内做到这一点?请查看。可能会有帮助。这不是推荐的方法。谢谢。您知道是否需要手动更新project.pbxproj吗?或者更新所有其他文件会导致project.pbxproj自动更新吗?@gkeenley您必须手动更新project.pbxproj。不幸的是,我知道的是:使用Xcode并应用他们推荐的更新。使用react native upgrade或任何有助于升级react native项目的命令行工具。据我所知,是的。对不起,我以为我有。现在完成:)降级后,我没有生成错误,但应用程序在运行时会崩溃,在黑屏上被阻止。