Алексей
https://yarnpkg.com/en/docs/install#mac-tab
Anonymous
дай ка запишу себе эту шутку )
Алексей
В гугле забанили?
пацаны с ютуба в прогеры идут - новое поколение
Daniyar
Спасибо homebrew был не установлен
Renat
убили киллерфичу rethinkdb
500 Internal Server Error
change streams выглядит вкусно
еееее, классно, а то в метеоре через oplog и poll observe работает, а тут уже из коробки такая фича
Anton
убили киллерфичу rethinkdb
так он вроде не особо живой уже был, у них там тяжкие времена настали с поддержкой, когда я последний раз смотрел на него. хотя может чего изменилось уже
Will
Господа, написал тут маленького телеграм бота на ноде, может кто мне код ревью провести?
Anonymous
Не вижу никакого кода
Anonymous
Где ссылка на гитхаб?
Will
https://github.com/WillDonut/telegram-bot-which-hates-stickers Я хотел в личку кинуть, но ладно опозорюсь на 2к человек.
V
ну такое, зачем миксить колбеки и промисы? почему асинк\авейт не заюзать? по самому стилю кода тоже бы все к единому целому привести
。◕‿◕。
https://github.com/WillDonut/telegram-bot-which-hates-stickers/blob/master/src/tools.js#L4 тут for поменять на одну строчку по хорошему
。◕‿◕。
там где if (err) должен быть throw по хорошему
500 Internal Server Error
events.js L100 то что внутри if вынеси лучше в переменную с понятным названием, а то непонятно при каких случаях условие должно сработать
。◕‿◕。
https://github.com/WillDonut/telegram-bot-which-hates-stickers/blob/master/src/commands.js#L74 тут не понятно почему пустой массив аж на три строки? "packs": []
Will
ну такое, зачем миксить колбеки и промисы? почему асинк\авейт не заюзать? по самому стилю кода тоже бы все к единому целому привести
Ну скажем так, я осознано их не юзал, чтоб попробовать пованильнее, как бы смешно это не звучало.
V
так тогда все пованильнее фигач
。◕‿◕。
по consistency - где-то в коде используется строгое сравнение, где-то нестрогое
。◕‿◕。
https://github.com/WillDonut/telegram-bot-which-hates-stickers/blob/master/src/commands.js#L41 тут !=, семь строк ниже !==
。◕‿◕。
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
Завтра
там где if (err) должен быть throw по хорошему
А вдруг он хочет писать в функциональном стиле и позитивно ресолвить все 🤔
。◕‿◕。
тогда бы вместо for был бы map :)))
Ivan
Всем привет. Работаю в reg.ru разработчиком. Знаю много всего про Perl, архитектуру веб-проектов, удаленную командную разработку, новичок в ноде. Надеюсь, сообщество подскажет и наставит на путь истиный в изучении ноды. Сам и Москвы. Узнал из поиска. #whois
Ivan
Это не ко мне, а к бизнесу ))
。◕‿◕。
это все есть в соглашении, которое вы принимаете ставя галочку (:
。◕‿◕。
и о всех ценах заранее сообщают
Таймураз
это все есть в соглашении, которое вы принимаете ставя галочку (:
Тем не менее, хороший бизнес дает пояснение заранее
Ivan
Как я понимаю здесь чат про ноду, а не про домены
Таймураз
Я уже сваливаю с reg.ru обратно
。◕‿◕。
☝️
Dmitry
Всем привет, работаю в МТС ИТ руководителем проектов по разработке, много лет занимался разработкой (в основном PHP). С NodeJS с 2013 года. Всем добра ) #whois
Таймураз
Сейчас исправлю, спасибо.
И да eslint-config-airbnb, если не используешь
Will
И да eslint-config-airbnb, если не используешь
Я читал про него, но решил пованильнее. в следующий раз буду что-то писать и дебагать не через console.log, хех.
。◕‿◕。
он никак не мешает ванильности :D
Ivan
Подскажите как справиться с падением express.js. На ошибке TypeError: Cannot read property 'match' of undefined падает. Обработчик ошибок по инструкции из доки официальной. Но чего-то он не обрабатывает нифига, хотя по идее любой нормальный веб-сервер такого рода ошибки должен нормально обрабатывать и не падать
Will
Пованильнее? Чем руководствовался, когда решал пованильнее?
Тогда тут скорее подходит слово попроще.
。◕‿◕。
где-то вызывается match на undefined. Скорее всего на вашей части кода, а не на express
Таймураз
Тогда тут скорее подходит слово попроще.
Лучше как надо, а не проще страдай Я не шучу
Ivan
app.use(function errorHandler(err, req, res, next) { if ( err ) { console.error(err.stack); res.status(500).send('Something broke!'); return; } next(); });
Таймураз
NOOOOOOO
Идите вы со своим отсутствием ; !)
Завтра
Ivan
Функция в мидварине сама
。◕‿◕。
это какая версия express? в последней только три аргумента в middleware
。◕‿◕。
А, вижу
Will
Лучше как надо, а не проще страдай Я не шучу
Ну когда я начинаю что-то новое учить, я стараюсь использовать инструменты как можно проще. Чтоб в ходе самого процесса изучения хотя бы с ними у меня не возникло трудностей.
Ivan
"express": "4.14.0",
。◕‿◕。
"express": "4.14.0",
на какую строку указывает при падении?
Ivan
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...
Ivan
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 ''; });
。◕‿◕。
+
Ivan
То что оно там падает это норм. Непонятно почему express крашится
Ivan
он должен вернуть 500
Ivan
или я что-то не понимаю
Таймураз
он должен вернуть 500
Ошибка происходит не внутри экспресса
。◕‿◕。
оберните в try catch query.match и падать не будет, тк падает весь процесс
Таймураз
или я что-то не понимаю
У тебя контекст функции не в области экспресса лежит ошибка падает через логгер
Ivan
Те получается любой код middleware и обработчиков роутов нужно в try заворачивать?
Таймураз
Те получается любой код middleware и обработчиков роутов нужно в try заворачивать?
Нет Как ты свой обработчик в приложении используешь?
Ivan
app.use
Таймураз
Сек, внимательнее код прочту
。◕‿◕。
везде где вызов метода над undefined (который не имеет методов) - будет креш
Ivan
Сам хендлер ошибок module.exports = function errorHandler(err, req, res, next) { if ( err ) { console.error(err.stack); res.status(500).send('Something broke!'); return; } next(); }