Windows 10とUbuntu 16.04で試してみました。どちらの場合も、JavaScriptでバリアベルや関数などを変更すると、ホットリロードはjsxの変更でのみ機能します。ホットリロードが有効になります。ライブリロードは無効です。 Visual Studioコードエディターで変更を保存すると、仮想デバイス(Androidスタジオ)がリロードされますが、変更はありません。 EXPOアプリの物理デバイスでも同じです。
まず、watchmanをインストールしませんでした。 Hot Relaodが機能していません。インストール後、ホットリロードも機能しません。
私はアプリをcreate-react-native-appで開始します。排出されません。
package.json:
{
"name": "NativeReduxSaga",
"version": "0.1.0",
"private": true,
"devDependencies": {
"jest-expo": "25.0.0",
"react-native-debugger-open": "^0.3.17",
"react-native-scripts": "1.11.1",
"react-test-renderer": "16.2.0"
},
"main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
"scripts": {
"start": "react-native-scripts start",
"eject": "react-native-scripts eject",
"Android": "react-native-scripts Android",
"ios": "react-native-scripts ios",
"test": "node node_modules/jest/bin/jest.js",
"postinstall": "rndebugger-open --expo"
},
"jest": {
"preset": "jest-expo"
},
"dependencies": {
"@redux-offline/redux-offline": "^2.3.2",
"expo": "^25.0.0",
"prop-types": "^15.6.1",
"react": "16.2.0",
"react-native": "0.52.0",
"react-native-autocomplete-input": "^3.5.0",
"react-navigation": "^1.5.2",
"react-redux": "^5.0.7",
"redux": "^3.7.2",
"redux-devtools-extension": "^2.13.2",
"redux-logger": "^3.0.6",
"redux-observable": "^0.18.0",
"redux-promise-middleware": "^5.0.0",
"redux-saga": "^0.16.0",
"redux-thunk": "^2.2.0",
"rxjs": "^5.5.7"
}
}
ウォッチマン版
{
"version": "4.9.1",
"buildinfo": "94e66865386e844f2cffe52e355a94c96562d2e3 2018-03-12T19:58:02.0000000Z"
}
ノードバージョンv6.13.1
WindowsでMAX_WAIT_TIMEを大きくするのに役立つ可能性があるという記事をいくつか読んだ。しかし、\ node_modules\react-native\node_modules\node-haste\lib\FileWatcher\index.jsファイルがありません。
そして、なぜそれがUbuntuでも機能しないのですか?
私は本当に警備員が必要ですか?どのように構成する必要がありますか?私の.watchmanconfigファイルは{}のような空のオブジェクトです。
Hot Reloadは通常create-react-native-appで機能しますか?
ホットリロードを機能させるために、私がここで試すことができるものを誰かが知っていますか?助けてくれてありがとう!
実際には、ホットリロードとライブリロードには違いがあります。
Hot Reloadingは、アプリケーションの状態を維持したまま、瞬時にリロードします。ただし、これはrender
メソッド内でのみ機能し、クラスReact.ComponentおよびComponentの拡張でのみトリガーされます
のように:
class A extends Component ...
class B extends React.Component ...
Live Reload一方、アプリケーションを再構築し、アプリケーションの状態を破棄します。変数やメソッドから最も単純な文字列まで、すべてが含まれています。これが、常にアプリケーションの開始画面から開始する理由です(状態が失われるため)。
それが役に立てば幸い!
Gitを削除するindex.lock
ファイルが機能した
rm -rf .git/index.lock
この問題を解決するために次の手順を実行しました。
mkdir Android/app/src/main/assets
反応ネイティブバンドル--platform Android --dev false --entry-file index.js --bundle-output Android/app/src/main/assets/index.Android.bundle- -assets-dest Android/app/src/main/res
シェイクAndroidデバイスまたはcmd + dシミュレーターでメニューを取得します。
一度ホットリロードを有効および無効にします。
dev設定->デバッグ->デバッグサーバーのホストとデバイスのポートで使用しているIPアドレスをクリアします。
ホットリロードを有効にします。
ターミナルでプロジェクトディレクトリに移動します->反応ネイティブの開始
react-native run-Androidまたは直接Android studio。
WSL 2を使用しているときにこの問題が発生する場合、ファイル監視が正しく機能するには、マウントされたWindowsフォルダー内ではなく、Linuxサブシステム内にファイルが存在する必要があります。 Redditに関するこの投稿 から取得:
彼らは、ファイル共有プロトコルを、独自のカスタム開発プロトコルの使用から9Pプロトコルの使用に変更しました。現時点では、ファイル変更イベントをサポートしていない可能性があります。
Linuxファイルシステム(例:ユーザーのホームディレクトリ)にコードを配置し、WindowsからWSL共有\ wsl $\DISTRO_NAMEを介してこれらのファイルにアクセスすることで、この問題を修正できると思います。
Windowsエクスプローラーで\ wsl $に移動すると、インストールされているすべてのWSL Linuxディストリビューションが表示され、ファイルシステム上のすべてのファイルにアクセスできます。
in Android Go to your MainApplication.Java search for @Override public boolean getUseDeveloperSupport() { return true; }
Trueを返すことを確認してください。問題かもしれません
私にとっての問題はAndroidX
に関するものでした。基本的に、反応ネイティブの古いバージョンのため、AndroidX
への移行が必要になることがあります
Android Studio
でプロジェクトを開くだけです
Refactor
->Migrate to Android X ...
およびフローの説明
保存側に昇格するときにバックアップを作成することを避けないでください