适当的机制降级反应原生

Sat*_*lam 20 javascript node.js npm react-native

我的情况是这样的:

我有一份运作良好的反应原生项目的工作副本.它已经提交到我的git存储库.

我决定将react-native升级到0.26.3然后再升级到0.28,最终导致了一个很大的依赖混乱.因此决定回到以前的工作版本.恢复了变化.从我的工作目录中删除了node_modules文件夹.

但现在npm install只是不行.

我在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"
  }
Run Code Online (Sandbox Code Playgroud)

现在我明白了

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
Run Code Online (Sandbox Code Playgroud)

这对我来说没有意义,因为我的反应依赖是15.0.2和react-native 0.26.0,你可以在package.json中看到.

请注意,这是来自之前正在进行的提交(整个批次).我也做了一个npm ls.古怪错误的依赖性显示在树一样的错误版本react-native,react-native-router-flux,react.

链接到ls输出

che*_*tan 18

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

npm install react-native@x.x.x  ex: npm install react-native@0.43.4
Run Code Online (Sandbox Code Playgroud)

这将安装指定的版本.

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


Mik*_*ski 8

react在package.json中明确更新您的依赖关系15.0.2,而不是^15.0.2因为后者解决15.1.0导致此问题.建议将其保留,直到您下次升级并再次出现此错误(以避免react在此期间更改其版本并且react-native没有为此做好准备).

此外,npm3 EPEERINVALID不再是错误,而是警告.


Sar*_*ith 6

更新2018

赶紧跑

npm install react-native@0.43.8
Run Code Online (Sandbox Code Playgroud)

替换0.43.8为您需要的版本。


Guy*_*Guy 5

降级 React Native 需要手动步骤。我建议使用https://react-native-community.github.io/upgrade-helper/这是我的步骤

  1. 将当前版本设置为基础版本并选择先前的react-native次要版本
  2. 恢复对文件所做的所有更改,如步骤 1 中比较视图中显示的那样
  3. 删除node_modules文件夹,清除watchman,重置metro缓存,删除pod,清除ios和android缓存文件。npx react-native-clean-project非常有帮助。
  4. yarn或者npm install为 ios 重新安装 pod
  5. 确保所有玩笑测试、排毒测试和手动测试 iOS 和 Android 均按预期工作。
  6. (如果需要)重复步骤以降级到另一个较低版本

建议:如果您要降级多个次要版本,那么一次降级一个版本可能会更容易。例如,从 0.61.x 降级到 0.58.x,首先降级到 0.60.x 版本会减少工作量,测试并确保 iOS 和 Android 中一切正常,然后继续