Как мне обновить сервер в node.js

#javascript #node.js #reload

#javascript #node.js #перезагрузка

Вопрос:

У меня есть приложение, в котором я отправляю файл JSON на сервер. Файл JSON может измениться, поэтому я хочу, чтобы он перезагружал сервер каждый раз, когда он меняется. Но когда я помещаю location.reload(), это выдает мне сообщение об ошибке, что местоположение не определено.
Что я должен использовать вместо location.reload()

Комментарии:

1. Сервер не может сам по себе изменять отображение браузера. Они являются отдельными компьютерами и обычно не подключены. Вы можете либо регулярно обновлять веб-страницу вашего браузера location.reload() с помощью самой веб-страницы (не на вашем сервере), либо отправлять ajax-вызов на веб-сервер, периодически запрашивая сервер, есть ли новое содержимое. Или вы можете установить непрерывное соединение WebSocket с сервером, и тогда сервер сможет отправлять вам новое содержимое всякий раз, когда оно поступает, а затем ваш Javascript браузера сможет отображать это новое содержимое.

2. Ваш сервер сам должен будет отслеживать файл JSON и обновлять его состояние всякий раз, когда оно изменяется.

Ответ №1:

Решение, которое я делал раньше, заключается в использовании nodemon (вместо node) для запуска вашего приложения node. Nodemon предназначен для перезапуска приложения узла при обнаружении изменений в файловой системе. Итак, если у вас есть узловое приложение, которое записывает файл JSON на диск, в ту же папку, что и узловое приложение, то оно перезапустится при изменении файла.

Комментарии:

1. Я тоже использую это, но чего я пытаюсь добиться, так это каждые несколько часов обновлять мой браузер на локальном хостинге, ничего не делая. Так что запишите это в коде. Точно так же, как вы можете запустить location.reload на своей обычной странице javascript, и она перезагружает браузер,

Ответ №2:

Вы можете использовать что-то вроде «навсегда».

 npm install forever
 

Затем измените json пакета

 "start": "forever start index.js"
 

затем всякий раз, когда вы хотите принудительно перезапустить, вы просто вызываете

 process.exit(1);
 

это попытается принудительно перезапустить ваш сервер

Комментарии:

1. Но есть ли способ без установки чего-либо обновить веб-сайт json api в функции

2. Другим решением было бы вызвать ошибку прерывания на сервере … что-то вроде необработанного отклонения обещания. Это также означает, что ваш devops правильно настроен для перезапуска, когда он становится неработоспособным. В любом случае, это не идеальное решение, но пропускает часть установки.

3. Зачем перезапускать сервер только для того, чтобы обновить какое-то состояние из файла JSON? Гораздо лучше просто запрограммировать сервер для мониторинга файла JSON и обновления его внутреннего состояния при изменении этого файла.