适当的机制降级反应原生

时间:2016-06-25 01:46: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"
  }

现在我

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

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

请注意,这是来自之前正在进行的提交(整个批次)。 我也做了npm ls。奇怪的错误依赖关系在树中显示为react-nativereact-native-router-fluxreact的错误版本。

link to ls output

7 个答案:

答案 0 :(得分:14)

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

npm install react-native@x.x.x  ex: npm install react-native@0.43.4

这将安装指定的版本。

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

答案 1 :(得分:7)

请将package.json中的react依赖项更新为15.0.2,而不是^15.0.2,因为后者会解析为导致此问题的15.1.0。建议将其保留,直到您下次升级并再次出现此错误(以避免在此期间react更改其版本并且react-native尚未准备好它。)

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

答案 2 :(得分:5)

更新2018

跑步

    ArrayList<String> contryList=new ArrayList<String>();
    contryList.add("India");
    contryList.add("United States");
    contryList.add("Other");
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
        android.R.layout.simple_spinner_item, contryList);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(dataAdapter);

npm install react-native@0.43.8 替换为您需要的版本。

答案 3 :(得分:3)

再次尝试npm prune然后npm i

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

答案 4 :(得分:1)

降级React Native需要手动步骤。我建议使用RN-DIFF回购https://github.com/ncuillery/rn-diff。这是我的步骤

  1. 在RN-DIFF中找到要降级的版本,单击比较视图,然后更新package.json以使react-nativereact与RN-DIFF中的相同版本匹配> package.json。 here's an example
  2. 还原对文件所做的所有更改,如RN-Diff比较视图次要更新中所示(您可以忽略补丁)
  3. 删除node_modules文件夹,清除监视程序,重置Metro缓存,清除ios缓存文件和Android缓存文件。
  4. yarn install

注意:如果您要降级多个次要版本。例如,从0.56.0降到0.54.4,则应一次降级一个版本。首先降级到0.55.4版本,测试它是否可以在iOS和Android上运行,然后继续降级到更低版本

答案 5 :(得分:0)

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

答案 6 :(得分:0)

如果您在Package.json中更改版本并重新安装npm packages,则会出现构建错误。请refer降级/升级特定版本。