微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

npm install在node_modules中清除react-native

当我尝试使用npm install将redux安装到我的react-native项目时,我遇到了一个问题.每次运行npm install redux –save都会清除node_modules中的react-native目录.

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

我也尝试复制&将node_modules中的react-redux和redux从另一个项目传递到我当前的react-native项目.但它不能成功,错误导致我在github上的issue.我听了这个帮助,也失败了.

其他一些信息:

➜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"
    }
}

任何建议表示赞赏.谢谢

解决方法

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

解:

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

什么是package-lock.json?

npm v5有很多变化你可以读它here.其中一个是在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),您会注意到三件事:

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

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

希望这可能会帮助别人.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐