Алексей
Алексей
https://yarnpkg.com/en/docs/install#mac-tab
Таймураз
Anonymous
дай ка запишу себе эту шутку )
Daniyar
Спасибо homebrew был не установлен
Anton
Renat
убили киллерфичу rethinkdb
500 Internal Server Error
change streams выглядит вкусно
еееее, классно, а то в метеоре через oplog и poll observe работает, а тут уже из коробки такая фича
Anton
убили киллерфичу rethinkdb
так он вроде не особо живой уже был, у них там тяжкие времена настали с поддержкой, когда я последний раз смотрел на него. хотя может чего изменилось уже
Renat
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 поменять на одну строчку по хорошему
Will
。◕‿◕。
там где if (err) должен быть throw по хорошему
500 Internal Server Error
events.js L100 то что внутри if вынеси лучше в переменную с понятным названием, а то непонятно при каких случаях условие должно сработать
Will
。◕‿◕。
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 тут !=, семь строк ниже !==
Will
。◕‿◕。
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
。◕‿◕。
тогда бы вместо for был бы map :)))
Ivan
Всем привет. Работаю в reg.ru разработчиком. Знаю много всего про Perl, архитектуру веб-проектов, удаленную командную разработку, новичок в ноде. Надеюсь, сообщество подскажет и наставит на путь истиный в изучении ноды. Сам и Москвы. Узнал из поиска. #whois
Таймураз
Ivan
Это не ко мне, а к бизнесу ))
。◕‿◕。
это все есть в соглашении, которое вы принимаете ставя галочку (:
。◕‿◕。
и о всех ценах заранее сообщают
Таймураз
Завтра
Ivan
Как я понимаю здесь чат про ноду, а не про домены
Таймураз
Я уже сваливаю с reg.ru обратно
。◕‿◕。
☝️
Dmitry
Всем привет, работаю в МТС ИТ руководителем проектов по разработке, много лет занимался разработкой (в основном PHP). С NodeJS с 2013 года. Всем добра ) #whois
Завтра
Таймураз
。◕‿◕。
он никак не мешает ванильности :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",
Will
。◕‿◕。
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 '';
});
Таймураз
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 '';
});
req.body.query не задан
。◕‿◕。
+
Ivan
То что оно там падает это норм. Непонятно почему express крашится
Ivan
он должен вернуть 500
Ivan
или я что-то не понимаю
。◕‿◕。
оберните в try catch query.match и падать не будет, тк падает весь процесс
Ivan
Те получается любой код 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();
}