Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.04.2021, 11:29
Новичок на форуме
Отправить личное сообщение для drozd2016 Посмотреть профиль Найти все сообщения от drozd2016
 
Регистрация: 11.01.2021
Сообщений: 7

Настройка при ошибке перезапуска приложения на node js
Всем привет.
Я начинающий программист. И знаю, что при программировании появляются подводные камни и с ними надо бороться. Но тут проблемка интересная, возможно кто подскажет или поделиться ссылкой на другой ресурс, в котором я смогу найти ответ.

Так вот ближе к теме. У меня есть свой телеграм бот- напоминалка. Програмнно бот реализован на js с библиотекой telegraf.js. Он присылает напоминания пару раз в день. Все работает отлично. Но, как всегда есть слово - но.

Мне нужно, чтобы бот работал 24-ри часа в сутки. Для этого я выделил системник на котором настроил в биосе включения по питанию. Запуск бота поместил в батовский файлик в нем прописано:

Код:
start npm run start
cmd cd D:\папка с ботом  - в которой лежыт app.js
Этот батовский файл я закинул в автозагрузку виндовс. Тоесть при отключении и включении электроэнергии системник стартует, потом виндовс и автозагрузка бота. Как бы все нормально. Но, не тут то было.
При запуске бота не всегда есть интернет он может появиться после 10-20 минут после старта бота. Соответственно, при старте запускается cmd в котором запускается окно npm в котором работает бот:
Код:
[nodemon] 2.0.7
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node app.js`
и тут выдает 3 ошибки:
Код:
(node:10496) UnhandledPromiseRejectionWarning: FetchError: request to https://api.telegram.org/bot.....
(node:10496) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:10496) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
Скорей всего программа должна подключиться к телеграмму и к node. B ей надо интернет для регистрации каких-то модулей.
Проблема в том, что при появлении интернета программа так и висит с ошибкой и не работает. То есть, надо настроить перезапуск приложения (ну например раз в 15 минут) и если интернет есть, то оно стартанет и все заработает. Так вот вопрос как можно сделать перезапуск приложения програмнно?

Буду очень благодарен за любую помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 29.04.2021, 11:17
Новичок на форуме
Отправить личное сообщение для drozd2016 Посмотреть профиль Найти все сообщения от drozd2016
 
Регистрация: 11.01.2021
Сообщений: 7

Вобщим пробовал я и pm2 и forever но если компютер запускаеться и нет интернета то приложения с ошибкой. И при подключении интернета так и висит с ошибкой.

Но решения я нашел. Как оказалось что бы проверирит подключения к интернету можно воспользоваться самим js ну а потом запустить приложения.

Так вот. Что я нашел и доработал: Функция которая проверияет подключение к инттернету каждых 10 секунд (можно любое время поставить) по сеттаймаут. Если подключение есть то выполняеться услове и запускаеться весь код. Если подключение нет то через сет таймаут вызываеться через оперделенное время функция которая делает все то же самое. Но если подключения есть то запускаеться код. Тоесть приложения не будет запущено пока не появиться интернет. Это впринцепе то что мне надо. Теперь при появлении питания 1. Включаеться системник. 2. Заход в виндовс. 3. Автозагрузка приложения. 4. Которое ждет подключение интрнета и работает.
Так же надо установить npm install internet-available - модуль
Может кто-то будет искать решения этой проблемы вот код:

function f333 () {internetAvailable().then(function(){ 
// код програмы
console.log("Internet");
}).catch(function(){
console.log("No internet"); // Когда нет интрнета
 setTimeout (f333, 10000); // Время через которое срабатует функция снова
});

}f333 ();


Всем спс кто пытался помочь
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработчик тестов Puppeteer (Node js) rogerward2526 Работа 2 22.09.2020 22:53
REST API для сайта на Node js Ashotich Node.JS 2 26.09.2016 23:04
Wanted! Node JS programmer with math & encryption background Job.1920 Работа 0 28.04.2015 09:17
Как сделать так, чтобы JS при нажатии на кнопку не выполняла запрос со страницы. JSProgrammer Элементы интерфейса 3 18.05.2010 20:18
Можно ли отключить остановку javascript при ошибке в IE6 ? limonad Internet Explorer 0 28.01.2010 18:04