Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 February 22

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Хуки решают проблему 100500 мидлварей которые ранятся там где надо и не надо последовательно
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Хуки решают проблему 100500 мидлварей которые ранятся там где надо и не надо последовательно
Так хуки тоже связаны по времени, просто более явно. На одном хуке тоже может быть важен порядок вызовов
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Vlad Sobenko
Так хуки тоже связаны по времени, просто более явно. На одном хуке тоже может быть важен порядок вызовов
на одном уровне все хуки выполняются параллельно и независимо друг от друга
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Alexander
на одном уровне все хуки выполняются параллельно и независимо друг от друга
А внутри одного обрабочика хука?
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Типо:
fasty('hookName', (payload) => {
const pay1 = someHandl1(payload)
return someHandl2(pay1)
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Vlad Sobenko
А внутри одного обрабочика хука?
Внутри одного хука можно делать все что угодно, хоть запускать експрес, слать на него реквест и там ранить мидлвари.
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Внутри одного хука можно делать все что угодно, хоть запускать експрес, слать на него реквест и там ранить мидлвари.
Ну так по смыслу очень похоже на те же мидлвари. Только нужно вместо записи в реквест, респ  - писать в иммутабельный обьект контекста.
источник

Д

Дмитрий in NodeUA - JavaScript and Node.js in Ukraine
в том и суть что мидлвары могут рейс кондишны вызвать. в иммутабельности вся фича
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Дмитрий
в том и суть что мидлвары могут рейс кондишны вызвать. в иммутабельности вся фича
запрет менять req, res и введение иммутабельного payload для передачи данных решило бы проблему?
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Дмитрий
в том и суть что мидлвары могут рейс кондишны вызвать. в иммутабельности вся фича
мне пока в голову не влазит это. Что даже в рамках одного реквеста могут быть рейс кондишены, через sync/async вызовы)
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Vlad Sobenko
запрет менять req, res и введение иммутабельного payload для передачи данных решило бы проблему?
и забрало бы смысл мидлваров
источник

Д

Дмитрий in NodeUA - JavaScript and Node.js in Ukraine
Vlad Sobenko
запрет менять req, res и введение иммутабельного payload для передачи данных решило бы проблему?
ага. только для этого прийдется переимплементировать мидлвары что бы они читали не один и тот же объект, а перекидывали результат в параметры следующуго обработчика)
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
и забрало бы смысл мидлваров
Ну да, ещё нужно позволить обработать req, res только раз.
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Дмитрий
ага. только для этого прийдется переимплементировать мидлвары что бы они читали не один и тот же объект, а перекидывали результат в параметры следующуго обработчика)
Сделать Object.freeze на рек и рес и посмотреть сколько всего отвалится :)
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Дмитрий
ага. только для этого прийдется переимплементировать мидлвары что бы они читали не один и тот же объект, а перекидывали результат в параметры следующуго обработчика)
ну да, я за это и говорю)
источник

Д

Дмитрий in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Сделать Object.freeze на рек и рес и посмотреть сколько всего отвалится :)
ага, отвалится примерно весь express 🌚
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Дмитрий
ага, отвалится примерно весь express 🌚
В этом и смысл :)
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Дмитрий
ага. только для этого прийдется переимплементировать мидлвары что бы они читали не один и тот же объект, а перекидывали результат в параметры следующуго обработчика)
даже такая имплементация будет содержать недостаток temporal coupling
источник

NG

Nick Golub in NodeUA - JavaScript and Node.js in Ukraine
@tshemsedinov
Написал скрипт на ноде, который опрашивает телеграм-бота, иногда бот отвечает таймаутом из-за частых опросов этого бота, в итоге на винде процесс крутится и дальше, а на убунте - останавливается. Из-за чего может быть такое поведение и в какую сторону стоит посмотреть?
источник

NG

Nick Golub in NodeUA - JavaScript and Node.js in Ukraine
[152.366] Error 400 BOT_RESPONSE_TIMEOUT 2 2
node:internal/process/promises:227
         triggerUncaughtException(err, true /* fromPromise */);
         ^

RawError: 400 BOT_RESPONSE_TIMEOUT CODE#400 BOT_RESPONSE_TIMEOUT
   at NetworkerThread.processError (/home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:573:12)
   at /home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:728:34
   at Generator.next (<anonymous>)
   at step (/home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:76:202)
   at /home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:76:459
   at Promise._execute (/home/dev/projects/tg-zero-checker/node_modules/bluebird/js/release/debuggability.js:384:9)
   at Promise._resolveFromExecutor (/home/dev/projects/tg-zero-checker/node_modules/bluebird/js/release/promise.js:518:18)
   at new Promise (/home/dev/projects/tg-zero-checker/node_modules/bluebird/js/release/promise.js:103:10)
   at /home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:76:99
   at NetworkerThread.processMessage (/home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:770:7)
   at /home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:656:26
   at Generator.next (<anonymous>)
   at step (/home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:76:202)
   at /home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:76:459
   at Promise._execute (/home/dev/projects/tg-zero-checker/node_modules/bluebird/js/release/debuggability.js:384:9)
   at Promise._resolveFromExecutor (/home/dev/projects/tg-zero-checker/node_modules/bluebird/js/release/promise.js:518:18)
   at new Promise (/home/dev/projects/tg-zero-checker/node_modules/bluebird/js/release/promise.js:103:10)
   at /home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:76:99
   at NetworkerThread.processMessage (/home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:770:7)
   at /home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:608:28
   at Generator.next (<anonymous>)
   at step (/home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:76:202)
   at /home/dev/projects/tg-zero-checker/node_modules/telegram-mtproto/lib/service/networker/index.js:76:459
   at Promise._execute (/home/dev/projects/tg-zero-checker/node_modules/bluebird/js/release/debuggability.js:384:9)
   at Promise._resolveFromExecutor (/home/dev/projects/tg-zero-checker/node_modules/bluebird/js/release/promise.js:518:18) {
 code: 400,
 type: 'BOT_RESPONSE_TIMEOUT',
 description: 'CODE#400 BOT_RESPONSE_TIMEOUT',
 originalError: {
   _: 'rpc_error',
   error_code: 400,
   error_message: 'BOT_RESPONSE_TIMEOUT'
 }
}
npm ERR! code 1
npm ERR! path /home/dev/projects/tg-zero-checker
npm ERR! command failed
npm ERR! command sh -c node new/app.js -p 1.2 -max 20000

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/dev/.npm/_logs/2021-02-22T10_13_46_019Z-debug.log
источник