npm install 清除 node_modules 中的 react-native

新手上路,请多包涵

尝试使用 npm installredux 安装到我的 react-native 项目时遇到问题。任何时候我运行 npm install redux --save --- --- node_modules react-native 中的目录都会被清除。

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

我还尝试将 react-reduxredux 中的 node_modules 从另一个项目复制到我当前的项目 react-native 但它不能成功,错误导致我在 github 上 遇到问题。我遵循了这个帮助,它也失败了。

其他一些信息:

➜ npm:5.0.3

➜ 反应原生 cli:2.0.1

➜ 反应原生:0.45.0

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

任何建议表示赞赏。谢谢

原文由 Robust 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

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

解决方案:

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

什么是 package-lock.json?

npm v5 有很多更改,您可以 在此处 阅读。其中之一是每当 npm 修改 /node_modules 或 package.json 时生成 package-lock.json (lockfile)。

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

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

删除是因为您现有的节点模块是在 npm v5 之前安装的。如果您使用 npm v5 安装模块(例如 npm install redux ),您会注意到三件事:

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

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

希望这可能对其他人有所帮助。

原文由 max23_ 发布,翻译遵循 CC BY-SA 3.0 许可协议

最后,我通过2个步骤解决了这个问题:

1)创建一个reactjs项目并安装redux

2)复制步骤1中 node_modules 的所有内容并粘贴到我当前的 react-native 项目中。

重新加载应用程序。一切正常。

原文由 Robust 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏