React create app hot reload не всегда работает на Linux

Я создал приложение для реагирования с использованием шаблона create-react-app, который, кажется, очень популярен, горячая перезагрузка обновлений несколько раз, когда какой-либо из файлов изменяется, а иногда нет, кажется, что существует минимальная продолжительность или что-то в этом роде, Я использую Ubuntu, node версия 7.0, script в package.json есть npm:'react-script start', что мне не хватает?

Ответ 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