。◕‿◕。
поэтому либо надо проверять на undefined, либо оборачивать в try catch
Ivan
и в основном скрипте app.use(errorHandler) в конце
。◕‿◕。
например If (foo && foo.bar && foo.bar.xyz) , либо try catch на мидлвар
Ivan
А в express middleware не обарачивается в try разве?
Ivan
что значит вне экспресса?
Таймураз
У него область видимости не наследуется от функции, которая потом будет передана в экспресс
Таймураз
У тебя код лежит на уровне модуля
Модуль- тоже функция
Ivan
вот блин
Таймураз
Колбек внутри morgan.token будет наследовать контекст модуля
。◕‿◕。
Ivan
Те получается если в любом стороннем модуле будет подобная бага, то экспресс рухнет и ничего с этим не сделаешь?
。◕‿◕。
падает не экспресс
Таймураз
Таймураз
Для этого тебе нужно в экспресс передать функцию, которая выполнит все это
Таймураз
wrapper
Ivan
Есть какой-то глобальный хендлер в ноде, с помощью которого можено ошибки обрабатывать и не убирвать процесс?
Таймураз
。◕‿◕。
try catch ?:)
Таймураз
Как факт- process.on('uncaughtException', (err) => {})
。◕‿◕。
в теории можно сделать process.on('uncaughtException') но это плохое решение
。◕‿◕。
да
Таймураз
Но это реально хреновое решение
Таймураз
У тебя может приложение зависнуть, ничего не делать, но при этом все как бы работает, ничего не падало
Таймураз
Пусть лучше процесс падает время от времени, но это видно
Ivan
Ну вот если процесс на проде упадет, это совсем не айс
Igor
авторестарт нужно включить
Dmitry
Падает это плохо, почему не настроить алерты которые будут сообщать о возникновении критических ошибок?
。◕‿◕。
это лучше, чем он продолжить работать (процесс), а само приложение зависнет в неопределенном state
。◕‿◕。
и не будет функционировать корректно
Таймураз
。◕‿◕。
да, есть процесс менеджеры которые авторестартят в таком случае. например pm2
Таймураз
Можно заюзать эту функцию для того, чтобы перед тем, как упасть, она слала ошибку
。◕‿◕。
но если процесс падает надо искать ошибку :)
Dmitry
Так их и можно записать в обработку.
。◕‿◕。
+
Ivan
у нас докер есть и вс такое и bluе/green тоже, но все-таки непонятно. В мире Perl все такое ошибки обрабатываются без убивания процесса
。◕‿◕。
особенно если падает при старте 🐧🐧
。◕‿◕。
добро пожаловать в новый дивный мир
Dmitry
++
Таймураз
Таймураз
В идеале ничего не должно падать, но увы, мы живем в трехмерном пространстве
Ivan
Вы мне открыли глаза ))
Dmitry
JS это магия )))
Igor
этот подход называется Crash-only software
Таймураз
Dmitry
сегодня от коллег услышал формулировку интересную. "Мы попробовали JS на фронте, и решили, а почему бы не использовать его на бэке, и взяли NodeJS"
Ivan
Ну как минимум я похоже плохо себе представляю области видимости в ноде и их влияние на обработку ошибок
。◕‿◕。
Суть в том что если приложение пытается получить доступ к методу у переменной, которой не существует - процесс должен падать потому-что если продолжит работу то она будет не корректной
。◕‿◕。
Потому-что код пишет программист, который подразумевает что в этот момент процесса эта переменная существует
。◕‿◕。
Но ее нет
Dmitry
эм, странное сравнение ) ну да ладно
。◕‿◕。
Так что все логично и корректно
Таймураз
Ivan
Ага. У нас в компании фронтендеры - js-cекта ))
Dmitry
они в этом году попробовали )))
Dmitry
ребята никогда не делали ничего на JS
Таймураз
Сразу херачить на асинках не выйдет
Dmitry
это да, соглашусь
Таймураз
Потому и сравнение со спайсом)
Таймураз
Забанить себя за мессаджи о спайсе?🤔
。◕‿◕。
я предпочитаю фен 🐧
Завтра
Завтра
Только тут, скорее, не об области видимости речь, а об асинхронности
Завтра
Из-за которой некоторые люди думают, что это область видимости не позволяет им юзать результат асинхронного запроса сразу
Таймураз
Завтра
У меня был один такой челик
Завтра
Таймураз
Ладно, перечитал
Это я в целом о языке говорил
Arthur
Добрый день.
Пишу юнит тесты для кода. Нужно протестировать метод. см скрин.
Arthur
Нужно сделать заглушку для метода dbutils.getOpen . Чтобы он обращался не к реальной бд, а просто подставить значение.
Для тестов использую mocha chai sinon
Arthur
это частично написаный тест. как можно сделать заглушку? для dbutils.getOpen в коде теста
V
сделай стаб через синон
Dima
Кто-нибудь пробовал sublime text 3 для работы с js:
— es/ts lint
— debug
— pug
— code style для разных частей приложения
— error check: ts/es5/es6
— webpack и прочие плюшки
Тут вопрос именно не в том, что бы прост как "проект" открыть нужную папку и кило-плагинов поставить.
Тут вопрос именно про личный опыт ... так сказать: стоит ли заморачиваться? (есть лицензия на веб-шторм / так же юзаем vscode) ... но не отпускает чувство, что всё это быстрей и удобней в sublime text 3 + terminal (все эти авторефрешы / webpackи).
Если есть годные статьи или ссылки на бест-практис/плагины, поделитесь пожалуйста