npm install 清除 node_modules 中的 react-native
npm install clear the react-native in node_modules
我在尝试使用 npm install
将 redux
安装到我的 react-native
项目时遇到问题。每当我执行 运行 npm install redux --save
时,node_modules
中的 react-native
目录将被清除。
然后我使用 rm -rf node_modules && npm install
所有 react-native
包都没有安装在里面 node_modules
所以我必须重新创建项目。
我还尝试将 node_modules
中的 react-redux
和 redux
从另一个项目复制并粘贴到我当前的 react-native
项目中。但它无法成功,错误将我带到 github 上的 issue。我跟着这个帮助,它也失败了。
一些其他信息:
➜ npm: 5.0.3
➜ react-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"
}
}
欢迎任何建议。谢谢
最后,我分两步解决了这个问题:
1) 创建reactjs项目并安装redux
2) 复制步骤1中node_modules
的所有内容并粘贴到我当前的react-native
项目中。
重新加载应用。一切正常。
很高兴您使用变通方法解决了这个问题,但请允许我解释一下为什么在您 运行 npm install redux --save
.
时删除了 react-native 模块
解法:
- 将包-lock.json移出项目文件夹(暂时不要删除它,因为稍后需要检查它)
- 运行
rm -rf node_modules && npm install
- 检查 /node_modules 并且 react-native 现在应该在那里
- 运行
npm install redux
(npm v5 默认将 --save)安装 redux 而不删除现有模块
什么是套餐-lock.json?
您可以阅读 npm v5 的一系列更改 here。其中之一是在 npm 修改 /node_modules 或 package.json 时生成 package-lock.json(锁定文件)。
使用 package-lock.json,任何运行 npm install
(v5) 的人都将获得与您正在开发的完全相同的 node_modules 树。所以,你也必须提交这个文件。
为什么 react-native 模块和其他模块在 运行 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 AND 中缺少的额外字段在新生成的模块中不存在包裹-lock.json.
所以,运行 rm -rf node_modules && npm install
再次解决不了问题,因为 package-lock.json 文件(记得只有 redux 和它的依赖被保存到文件中吗?你可以检查旧包-lock.json)
希望这可能对其他人有所帮助。
如果您使用 yarn 创建应用程序,它会被删除。如果您使用 yarn 创建了应用程序,请 运行 yarn add react-redux 而不是 npm install react-redux
我在尝试使用 npm install
将 redux
安装到我的 react-native
项目时遇到问题。每当我执行 运行 npm install redux --save
时,node_modules
中的 react-native
目录将被清除。
然后我使用 rm -rf node_modules && npm install
所有 react-native
包都没有安装在里面 node_modules
所以我必须重新创建项目。
我还尝试将 node_modules
中的 react-redux
和 redux
从另一个项目复制并粘贴到我当前的 react-native
项目中。但它无法成功,错误将我带到 github 上的 issue。我跟着这个帮助,它也失败了。
一些其他信息:
➜ npm: 5.0.3
➜ react-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"
}
}
欢迎任何建议。谢谢
最后,我分两步解决了这个问题:
1) 创建reactjs项目并安装redux
2) 复制步骤1中node_modules
的所有内容并粘贴到我当前的react-native
项目中。
重新加载应用。一切正常。
很高兴您使用变通方法解决了这个问题,但请允许我解释一下为什么在您 运行 npm install redux --save
.
解法:
- 将包-lock.json移出项目文件夹(暂时不要删除它,因为稍后需要检查它)
- 运行
rm -rf node_modules && npm install
- 检查 /node_modules 并且 react-native 现在应该在那里
- 运行
npm install redux
(npm v5 默认将 --save)安装 redux 而不删除现有模块
什么是套餐-lock.json?
您可以阅读 npm v5 的一系列更改 here。其中之一是在 npm 修改 /node_modules 或 package.json 时生成 package-lock.json(锁定文件)。
使用 package-lock.json,任何运行 npm install
(v5) 的人都将获得与您正在开发的完全相同的 node_modules 树。所以,你也必须提交这个文件。
为什么 react-native 模块和其他模块在 运行 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 AND 中缺少的额外字段在新生成的模块中不存在包裹-lock.json.
所以,运行 rm -rf node_modules && npm install
再次解决不了问题,因为 package-lock.json 文件(记得只有 redux 和它的依赖被保存到文件中吗?你可以检查旧包-lock.json)
希望这可能对其他人有所帮助。
如果您使用 yarn 创建应用程序,它会被删除。如果您使用 yarn 创建了应用程序,请 运行 yarn add react-redux 而不是 npm install react-redux