Create-react-appボイラープレートを使用して反応アプリケーションを作成しました。これは非常に人気があり、ホットリロードはファイルが変更されたときに更新され、時には更新されず、最小期間またはそのようなものがあるようです、私はm、Ubuntu、ノードバージョン7.0を使用して、package.jsonのスクリプトはnpm:'react-script start'
私は何が欠けていますか?
Npm startが変更を検出しない場合、以下はcreate-react-app
ドキュメントで提供される一般的なトラブルシューティング手順です- link 。
アプリがnpm start
で実行されており、エディターでコードを更新している間、borswerを更新されたコードで更新する必要があります。これが発生しない場合は、次の回避策のいずれかを試してください。
.env
ファイルが存在しない場合は作成し、CHOKIDAR_USEPOLLING=true
を追加します。これにより、次回npm start
を実行するときに、必要に応じてVM内でウォッチャーがポーリングモードを使用するようになります。max_users_watches
- リンク を増やしてみてくださいその他の参照:
これらを試してください:
max_user_watches
最後の手段として、これをenv変数として使用してみてください:CHOKIDAR_USEPOLLING=true npm start
ソース: https://github.com/facebookincubator/create-react-app/issues/659https://github.com/facebookincubator/create-react-app/issues/ 1049#issuecomment-261731734
私はこの作業を次の方法で行うことができました。
Sudo npm start
node_modulesフォルダーを削除して、cmd npm install
を使用して再インストールしてください
私のために働いた(ubuntu 18.04.3 LTS)
明らかに、ホットモジュールのリロードは、アプリをイジェクトする場合にすぐに使用できるようになります。
ただし、アプリをイジェクトしていない場合、アプリを機能させるために これらの手順 に従うことができます。
アプリの上部でReactDOM.render(...)
を見つけ、その下に次の行を追加します。
ReactDOM.render(...);
if (module.hot) {
module.hot.accept('./App', () => {
// --- Copy-paste your usual ReactDOM.render(...) call here: --- //
ReactDOM.render(...);
});
}
上記のリンクの手順は、reduxレデューサーなど、コンポーネントツリーの外部にあるものをホットリロードする方法も示しています。
nbuntでは、基本的にポートで実行されているすべてのプロセスを強制終了します(reactアプリのデフォルトは:3000)。
ポート3000で実行されているすべてのプロセスをリストします。
lsof -i :3000
このコマンドは、このようなものを表示します。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 7429 yipl 19u IPv4 1081760 0t0 TCP localhost:3000->localhost:35762 (ESTABLISHED)
chrome 26448 yipl 177u IPv4 1080082 0t0 TCP localhost:35762->localhost:3000 (ESTABLISHED)
PIDでプロセスを強制終了します。
kill -9 7429
kill -9 26488
反応アプリをもう一度起動します。
このコマンドを実行する
Sudo -i
echo 1048576 > /proc/sys/fs/inotify/max_user_watches
exit
私が経験しているもう1つのケースは、NVMで複数のバージョンのnodejsを並行して使用する場合です。基本的に、2つのターミナルウィンドウがあり、1つはノード10.xを実行し、もう1つはノード9.xで実行され、Webpackウォッチャーは変更を認識しなくなります。
解決策は、両方を同じノードバージョンにすることです。