npm install在node_modules中清除react-native

Rob*_*ust 5 npm react-native redux npm-install

当我尝试使用npm install安装redux到我的react-native项目时遇到问题.任何时候我跑npm install redux --savereact-native目录里面node_modules将被清除.

然后我使用rm -rf node_modules && npm install所有react-native包里面没有安装node_modules所以我必须重新创建项目.

我还尝试复制和过去react-reduxreduxnode_modules从其他项目我目前的react-native项目.但它不能成功,错误导致我在github 上的问题.我听了这个帮助,也失败了.

其他一些信息:

➜npm:5.0.3

➜itese-native-cli:2.0.1

➜反应原生:0.45.0

➜package.json

{
    "name": "MyProjectNAME",
    "version": "0.0.1",
    "private": true,
    "scripts": {
        "start": "node node_modules/react-native/local-cli/cli.js start",
        "test": "jest"
    },
    "dependencies": {
        "react": "16.0.0-alpha.12",
        "react-native": "0.45.0",
        "react-redux": "^5.0.5",
        "redux": "^3.6.0"
    },
    "devDependencies": {
        "babel-cli": "^6.24.1",
        "babel-jest": "20.0.3",
        "babel-preset-es2015": "^6.24.1",
        "babel-preset-es2017": "^6.24.1",
        "babel-preset-react-native": "1.9.2",
        "jest": "20.0.4",
        "react-test-renderer": "16.0.0-alpha.12"
    },
    "jest": {
        "preset": "react-native"
    }
}
Run Code Online (Sandbox Code Playgroud)

任何建议表示赞赏.谢谢

max*_*23_ 12

很高兴您使用解决方法解决了这个问题,但请允许我解释为什么在运行时删除了react-native模块npm install redux --save.

解:

  1. 将package-lock.json移出项目文件夹(不要删除它,因为稍后需要检查它)
  2. rm -rf node_modules && npm install
  3. 检查/ node_modules和react-native现在应该在那里
  4. 运行npm install redux(npm v5将默认设置为 - )以安装redux而不删除现有模块

什么是package-lock.json?

npm v5有很多变化,你可以在这里阅读.其中一个是在npm修改/ node_modules或package.json时生成package-lock.json(lockfile).

使用package-lock.json,任何运行npm install(v5)的人都将获得与您正在开发的完全相同的node_modules树.所以,你也必须提交这个文件.

为什么反应原生模块和其他模块在运行后被删除,npm install somePackageName即使它们是在package.json中定义的?

由于您在npm v5之前安装了现有节点模块,因此删除了.如果您使用npm v5安装模块(例如npm install redux),您会注意到三件事:

  1. 将生成package-lock.json(如果存在则更新).Redux及其依赖项保存在其中.
  2. redux的package.json与在npm v5之前安装的节点模块不同(一些额外的字段前缀为_ eg _from,_requiredBy,_resolved等).
  3. 最后,之前的V5将被删除我的猜测是由于它的package.json缺少额外的字段安装任何模块新生成包lock.json不存在.

因此,rm -rf node_modules && npm install再次运行不会解决问题因为package-lock.json文件(还记得只有redux及其依赖项保存到文件中吗?你可以查看旧的package-lock.json)

希望这可能会帮助别人.