@nodejs_ru

Страница 1370 из 2748
Renat
06.12.2017
09:22:05
убили киллерфичу rethinkdb

500 Internal Server Error
06.12.2017
09:34:34
change streams выглядит вкусно
еееее, классно, а то в метеоре через oplog и poll observe работает, а тут уже из коробки такая фича

Anton
06.12.2017
09:38:40
убили киллерфичу rethinkdb
так он вроде не особо живой уже был, у них там тяжкие времена настали с поддержкой, когда я последний раз смотрел на него. хотя может чего изменилось уже

Renat
06.12.2017
09:39:45
Google
Will
06.12.2017
10:29:55
Господа, написал тут маленького телеграм бота на ноде, может кто мне код ревью провести?

1nd2rd3st
06.12.2017
10:32:41
Не вижу никакого кода

Где ссылка на гитхаб?

Will
06.12.2017
10:33:36
https://github.com/WillDonut/telegram-bot-which-hates-stickers Я хотел в личку кинуть, но ладно опозорюсь на 2к человек.

Vsevolod
06.12.2017
10:37:10
ну такое, зачем миксить колбеки и промисы? почему асинк\авейт не заюзать? по самому стилю кода тоже бы все к единому целому привести

Yashko?
06.12.2017
10:37:12
https://github.com/WillDonut/telegram-bot-which-hates-stickers/blob/master/src/tools.js#L4 тут for поменять на одну строчку по хорошему

Will
06.12.2017
10:37:47
Yashko?
06.12.2017
10:38:25
там где if (err) должен быть throw по хорошему

500 Internal Server Error
06.12.2017
10:38:41
events.js L100 то что внутри if вынеси лучше в переменную с понятным названием, а то непонятно при каких случаях условие должно сработать

Yashko?
06.12.2017
10:39:28
https://github.com/WillDonut/telegram-bot-which-hates-stickers/blob/master/src/commands.js#L74 тут не понятно почему пустой массив аж на три строки? "packs": []

Will
06.12.2017
10:40:06
ну такое, зачем миксить колбеки и промисы? почему асинк\авейт не заюзать? по самому стилю кода тоже бы все к единому целому привести
Ну скажем так, я осознано их не юзал, чтоб попробовать пованильнее, как бы смешно это не звучало.

Vsevolod
06.12.2017
10:40:19
так тогда все пованильнее фигач

Google
Yashko?
06.12.2017
10:40:20
по consistency - где-то в коде используется строгое сравнение, где-то нестрогое

https://github.com/WillDonut/telegram-bot-which-hates-stickers/blob/master/src/commands.js#L41 тут !=, семь строк ниже !==

Yashko?
06.12.2017
10:42:21
https://github.com/WillDonut/telegram-bot-which-hates-stickers/blob/master/src/tools.js#L31 подобные конструкции можно менять на module.exports = { isBotAdmin, isUserAdmin }

и много странных пустых строк, стоит юзать линтер или что-то подобное https://github.com/WillDonut/telegram-bot-which-hates-stickers/blob/master/src/commands.js#L35

Kelin
06.12.2017
10:43:06
там где if (err) должен быть throw по хорошему
А вдруг он хочет писать в функциональном стиле и позитивно ресолвить все ?

Yashko?
06.12.2017
10:43:17
тогда бы вместо for был бы map :)))

Ivan
06.12.2017
10:43:47
Всем привет. Работаю в reg.ru разработчиком. Знаю много всего про Perl, архитектуру веб-проектов, удаленную командную разработку, новичок в ноде. Надеюсь, сообщество подскажет и наставит на путь истиный в изучении ноды. Сам и Москвы. Узнал из поиска. #whois

HashTag
06.12.2017
10:43:47
Подписка на #whois

Ivan
06.12.2017
10:45:54
Это не ко мне, а к бизнесу ))

Yashko?
06.12.2017
10:45:56
это все есть в соглашении, которое вы принимаете ставя галочку (:

и о всех ценах заранее сообщают

Таймураз
06.12.2017
10:46:23
это все есть в соглашении, которое вы принимаете ставя галочку (:
Тем не менее, хороший бизнес дает пояснение заранее

Ivan
06.12.2017
10:46:32
Как я понимаю здесь чат про ноду, а не про домены

Таймураз
06.12.2017
10:46:37
Я уже сваливаю с reg.ru обратно

Yashko?
06.12.2017
10:46:37
☝️

Dmitriy
06.12.2017
10:46:59
Всем привет, работаю в МТС ИТ руководителем проектов по разработке, много лет занимался разработкой (в основном PHP). С NodeJS с 2013 года. Всем добра ) #whois

HashTag
06.12.2017
10:46:59
Подписка на #whois

Google
Таймураз
06.12.2017
10:47:19
Сейчас исправлю, спасибо.
И да eslint-config-airbnb, если не используешь

Will
06.12.2017
10:48:20
И да eslint-config-airbnb, если не используешь
Я читал про него, но решил пованильнее. в следующий раз буду что-то писать и дебагать не через console.log, хех.

Таймураз
06.12.2017
10:48:35
Yashko?
06.12.2017
10:48:37
он никак не мешает ванильности :D

Ivan
06.12.2017
10:48:44
Подскажите как справиться с падением express.js. На ошибке TypeError: Cannot read property 'match' of undefined падает. Обработчик ошибок по инструкции из доки официальной. Но чего-то он не обрабатывает нифига, хотя по идее любой нормальный веб-сервер такого рода ошибки должен нормально обрабатывать и не падать

Will
06.12.2017
10:49:02
Пованильнее? Чем руководствовался, когда решал пованильнее?
Тогда тут скорее подходит слово попроще.

Yashko?
06.12.2017
10:49:13
где-то вызывается match на undefined. Скорее всего на вашей части кода, а не на express

Таймураз
06.12.2017
10:49:16
Тогда тут скорее подходит слово попроще.
Лучше как надо, а не проще страдай Я не шучу

Ivan
06.12.2017
10:50:11
app.use(function errorHandler(err, req, res, next) { if ( err ) { console.error(err.stack); res.status(500).send('Something broke!'); return; } next(); });

Таймураз
06.12.2017
10:50:14
NOOOOOOO
Идите вы со своим отсутствием ; !)

Kelin
06.12.2017
10:50:35
Ivan
06.12.2017
10:50:36
Функция в мидварине сама

Yashko?
06.12.2017
10:50:55
это какая версия express? в последней только три аргумента в middleware

А, вижу

Will
06.12.2017
10:51:17
Лучше как надо, а не проще страдай Я не шучу
Ну когда я начинаю что-то новое учить, я стараюсь использовать инструменты как можно проще. Чтоб в ходе самого процесса изучения хотя бы с ними у меня не возникло трудностей.

Ivan
06.12.2017
10:51:41
"express": "4.14.0",

Google
Yashko?
06.12.2017
10:52:08
"express": "4.14.0",
на какую строку указывает при падении?

Ivan
06.12.2017
10:52:51
TypeError: Cannot read property 'match' of undefined at Function.gqlquery (/opt/***/middleware/logger.js:19:16) at /opt/***/middleware/logger.js:11:20 at Array.logRequest (/opt/***/node_modules/morgan/index.js:122:18) at listener (/opt/***/node_modules/on-finished/index.js:169:15) at onFinish (/opt/***/node_modules/on-finished/index.js:100:5) at callback (/opt/***/node_modules/ee-first/index.js:55:10) at ServerResponse.onevent (/opt/***/node_modules/ee-first/index.js:93:5) at emitNone (events.js:110:20) at ServerResponse.emit (events.js:207:7) at onFinish (_http_outgoing.js:733:10) at _combinedTickCallback (internal/process/next_tick.js:131:7) at process._tickDomainCallback (internal/process/next_tick.js:218:9) [nodemon] app crashed - waiting for file changes before starting...

logger.js import morgan from 'morgan'; module.exports = function() { return morgan(function (tokens, req, res) { return [ '==>', tokens.method(req, res), tokens.url(req, res), tokens.status(req, res), ' : ', tokens.gqlquery(req, res), '-', tokens['response-time'](req, res), 'ms', ].join(' '); }); }; morgan.token('gqlquery', function (req, res) { let list = req.body.query.match(/(query[^{]+) \{/); if ( list ) { return list[0]; } return ''; });

Yashko?
06.12.2017
10:54:28
+

Ivan
06.12.2017
10:54:30
То что оно там падает это норм. Непонятно почему express крашится

он должен вернуть 500

Admin
ERROR: S client not available

Ivan
06.12.2017
10:55:08
или я что-то не понимаю

Таймураз
06.12.2017
10:55:12
он должен вернуть 500
Ошибка происходит не внутри экспресса

Yashko?
06.12.2017
10:55:16
оберните в try catch query.match и падать не будет, тк падает весь процесс

Таймураз
06.12.2017
10:56:06
или я что-то не понимаю
У тебя контекст функции не в области экспресса лежит ошибка падает через логгер

Ivan
06.12.2017
10:56:18
Те получается любой код middleware и обработчиков роутов нужно в try заворачивать?

Таймураз
06.12.2017
10:57:11
Те получается любой код middleware и обработчиков роутов нужно в try заворачивать?
Нет Как ты свой обработчик в приложении используешь?

Ivan
06.12.2017
10:57:26
app.use

Таймураз
06.12.2017
10:57:26
Сек, внимательнее код прочту

Yashko?
06.12.2017
10:58:00
везде где вызов метода над undefined (который не имеет методов) - будет креш

Ivan
06.12.2017
10:58:01
Сам хендлер ошибок module.exports = function errorHandler(err, req, res, next) { if ( err ) { console.error(err.stack); res.status(500).send('Something broke!'); return; } next(); }

Yashko?
06.12.2017
10:58:09
поэтому либо надо проверять на undefined, либо оборачивать в try catch

Google
Ivan
06.12.2017
10:58:31
и в основном скрипте app.use(errorHandler) в конце

Yashko?
06.12.2017
10:58:47
например If (foo && foo.bar && foo.bar.xyz) , либо try catch на мидлвар

Ivan
06.12.2017
10:59:20
А в express middleware не обарачивается в try разве?

Yashko?
06.12.2017
10:59:28
Те получается любой код middleware и обработчиков роутов нужно в try заворачивать?
так что да, любой. Просто обычно там уже все предусмотрено и там undefined нигде не вылезет

Таймураз
06.12.2017
10:59:28
и в основном скрипте app.use(errorHandler) в конце
У тебя morgan.token объявлен вне экспресса и все ошибки пудут падать вне экспресса

Ivan
06.12.2017
11:00:02
что значит вне экспресса?

Таймураз
06.12.2017
11:00:20
У него область видимости не наследуется от функции, которая потом будет передана в экспресс

У тебя код лежит на уровне модуля Модуль- тоже функция

Ivan
06.12.2017
11:01:10
вот блин

Таймураз
06.12.2017
11:01:21
Колбек внутри morgan.token будет наследовать контекст модуля

Ivan
06.12.2017
11:02:08
Те получается если в любом стороннем модуле будет подобная бага, то экспресс рухнет и ничего с этим не сделаешь?

Yashko?
06.12.2017
11:02:14
падает не экспресс

Таймураз
06.12.2017
11:02:40
Те получается если в любом стороннем модуле будет подобная бага, то экспресс рухнет и ничего с этим не сделаешь?
Не всегда Можно написать так, чтобы область видимость лежала в области экспресса

Для этого тебе нужно в экспресс передать функцию, которая выполнит все это

wrapper

Ivan
06.12.2017
11:03:59
Есть какой-то глобальный хендлер в ноде, с помощью которого можено ошибки обрабатывать и не убирвать процесс?

Yashko?
06.12.2017
11:04:10
try catch ?:)

Таймураз
06.12.2017
11:04:51
Как факт- process.on('uncaughtException', (err) => {})

Страница 1370 из 2748