_npm install
_を使用してredux
を_react-native
_プロジェクトにインストールしようとすると、問題に直面します。 _npm install redux --save
_を実行すると、_react-native
_内の_node_modules
_ディレクトリがクリアされます。
次に_rm -rf node_modules && npm install
_を使用します。すべての_react-native
_パッケージは_node_modules
_内にインストールされないため、プロジェクトを再作成する必要があります。
また、_react-redux
_の_node_modules
_と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"
}
}
_
どんな提案も大歓迎です。ありがとうございました
回避策を使用してこの問題を解決できたことをうれしく思いますが、npm install redux --save
を実行したときに反応ネイティブモジュールが削除された理由を説明させてください。
ソリューション:
rm -rf node_modules && npm install
を実行しますnpm install redux
(npm v5はデフォルトで保存)を実行して、既存のモジュールを削除せずにreduxをインストールしますpackage-lock.jsonとは何ですか?
Npm v5には多くの変更点があり、それを読むことができます here 。それらの1つは、npmが/ node_modulesまたはpackage.jsonを変更するたびにpackage-lock.json(ロックファイル)を生成することです。
Package-lock.jsonを使用すると、npm install
(v5)を実行するすべてのユーザーが、開発中とまったく同じnode_modulesツリーを取得できます。したがって、このファイルもコミットする必要があります。
package.jsonで定義されていても、npm install somePackageName
を実行した後、react-nativeモジュールなどが削除されたのはなぜですか?
既存のノードモジュールがnpm v5より前にインストールされていたため、削除が行われました。 npm v5を使用してモジュール(たとえば、npm install redux
)をインストールすると、次の3つのことに気付くでしょう。
したがって、rm -rf node_modules && npm install
を再度実行してもpackage-lock.jsonファイルが原因で問題は解決しません(reduxとその依存関係のみがファイルに保存されたことを覚えていますか?古いpackage-lock.jsonを確認できます)
これが他の誰かに役立つことを願っています。
最後に、2つの手順でこの問題を解決しました。
1)reactjsプロジェクトを作成してreduxをインストールする
2)ステップ1でnode_modules
のすべてのコンテンツをコピーし、現在のreact-native
プロジェクトに貼り付けます。
アプリをリロードします。すべてがうまく機能します。