Я создал приложение для реагирования с использованием шаблона create-react-app, который, кажется, очень популярен, горячая перезагрузка обновлений несколько раз, когда какой-либо из файлов изменяется, а иногда нет, кажется, что существует минимальная продолжительность или что-то в этом роде, Я использую Ubuntu, node версия 7.0, script в package.json есть npm:'react-script start'
, что мне не хватает?
React create app hot reload не всегда работает на Linux
Ответ 1
Когда npm start не обнаруживает изменения, ниже приведены общие шаги устранения неполадок, представленные в документации create-react-app
- ссылка.
В то время как приложение работает с npm start
, а обновление кода в редакторе должно обновить borswer с обновленным кодом.
Если этого не происходит, попробуйте выполнить одно из следующих обходных решений:
- Если файлы проекта напрямую синхронизируются с вашей локальной системой из облачного хранилища, такого как Dropbox или Google Drive, и пытаетесь запустить приложение прямо в них, попробуйте его переместить.
- Из-за ошибки Webpack вы можете перезапустить наблюдателя. Если наблюдатель не обнаруживает index.js и youre ссылается на него по имени папки.
- Функция безопасной записи в редакторах, таких как Vim и IntelliJ, в настоящее время ломает наблюдателя. Вам нужно отключить его.
- Из-за ошибка веб-загрузчика, проекты с контуром содержат круглые скобки, вызывающие проблему, попробуйте переместить проект на путь без них..
- Чтобы разрешить больше наблюдателей в Linux и macOS, вам может потребоваться настроить настройки системы.
- Если проект запускается внутри виртуальной машины, такой как (созданный Vagrant) VirtualBox, создайте файл
.env
в каталоге проекта, если он не существует, и добавьте к немуCHOKIDAR_USEPOLLING=true
. Это гарантирует, что при следующем запускеnpm start
наблюдатель будет использовать режим опроса, если необходимо, внутри виртуальной машины. - Можно попробовать увеличить ссылку
max_users_watches
-
Дополнительные ссылки:
Ответ 2
Попробуйте это:
- Выключите безопасную запись в вашей IDE
- Увеличение
max_user_watches
- На вашем пути не должно быть скобок
в крайнем случае попробуйте использовать это как переменную env:
CHOKIDAR_USEPOLLING=true npm start
Источники:https://github.com/facebookincubator/create-react-app/issues/659 https://github.com/facebookincubator/create-react-app/issues/1049#issuecomment-261731734
Ответ 3
Я смог сделать эту работу, используя:
sudo npm start
Ответ 4
В unbuntu я в основном убиваю весь процесс, запущенный на порте (для приложения по умолчанию реагирует: 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
Запустите приложение реакции снова.
Ответ 5
По-видимому, горячая перезагрузка модуля работает только из коробки, если вы удалили свое приложение.
Но , если вы не удалили свое приложение, вы можете выполнить эти инструкции, чтобы оно заработало.
Найдите ReactDOM.render(...)
в верхней части своего приложения и добавьте следующие строки под ним:
ReactDOM.render(...);
if (module.hot) {
module.hot.accept('./App', () => {
// --- Copy-paste your usual ReactDOM.render(...) call here: --- //
ReactDOM.render(...);
});
}
Инструкции, приведенные выше, также показывают, как выполнить горячую перезагрузку за пределами дерева компонентов, например, редукционных редукторов.
Ответ 6
Еще один дополнительный случай, с которым я столкнулся, - это параллельное использование нескольких версий nodejs с NVM. По сути, у меня есть два окна терминала, одно из которых запускает узел 10.x, другое - на узле 9.x, и наблюдатель Webpack перестает видеть изменения.
Решение состоит в том, чтобы привести оба к одной версии узла
Ответ 7
попробуйте удалить папку node_modules и переустановить
с помощью cmd npm install
работал для меня (Ubuntu 18.04.3 LTS)
Ответ 8
выполните эту команду
sudo -i
echo 1048576 > /proc/sys/fs/inotify/max_user_watches
exit