
Vladimir
24.07.2016
17:17:02
лучший способ - ломать периодически

Никита
24.07.2016
17:17:25
Нет, лучший способ — понять, в чём дело, и предоставить нормальный API для начала.

Vladimir
24.07.2016
17:17:38
Если возможно - да
Но иногда люди так делают, просто потому что могут

Google

Никита
24.07.2016
17:17:53
А старые кишки задепрекейтить, спрятать внутрь, и отломать.

Vladimir
24.07.2016
17:17:58
Как в случае с grceful-fs

Никита
24.07.2016
17:18:00
Если это необходимо.
Например, тот же самый readable-stream
Который как модуль в npm.
До совсем недавнего времени он дёргал внутренний API евентемиттера.
Внутренние _headers дёргают все кому не лень.

Vladimir
24.07.2016
17:20:55
Ну без этого всего явно обойтись можно

Никита
24.07.2016
17:21:16
С readable-stream было нельзя, для достижения того, чего они хотели.
Только недавно новое апи появилось.
https://github.com/nodejs/readable-stream/blob/master/lib/_stream_readable.js#L58-L69 — вот там feature detection

Vladimir
24.07.2016
17:22:09
проблема в том, что этого не нужно хотеть)
в js люди не понимают, что такое абстракция зачастую

Google

Vladimir
24.07.2016
17:23:02
в event emitter нельзя полагаться на порядок - в этом суть асбтракции

Никита
24.07.2016
17:23:45
Да, это было так, но readable-stream из ядра полагался.
Оттуда это перекочевало в отдельный модуль.
Если это нужно настолько — то тогда само API пора менять.

Vladimir
24.07.2016
17:24:26
в этом и есть ошибка - нельзя было выделять это в модуль в таком виде

Никита
24.07.2016
17:24:28
Что, кстати, и сделали.
Конечно, нельзя.
Вообще, дёргать из модулей недокументированное API очень некруто.
https://github.com/nodejs/node/pull/6032 — вот тут добавили prependListener
А, я вижу там твой комментарий.
readable-stream не был единственным модулем, которому был важен порядок.
И я не вижу ничего плохого в том, чтобы предоставить гарантии порядка на уровне абстракции.

Vladimir
24.07.2016
17:28:03
так там нужно чтобы хэндлер вызвался первым - такой гарантии все равно нет

Никита
24.07.2016
17:28:16
Пока это гарантируется в документированном апи и пока никто не пользуется недокументированным апи и не полагается на недокументированное поведение — всё хорошо.

Vladimir
24.07.2016
17:29:35
да, но модулям то нужно не это
им нужно чтобы он был строго первым

Никита
24.07.2016
17:31:14
Тогда надо было делать иначе и кидать исключение, если там уже есть «строго первый».
Емнип, это обсуждалось, надо смотреть.
Кстати, такую фичу всё ещё можно добавить флагом к prependListener

Google

Никита
24.07.2016
17:33:47
Но точно ли оно нужно?

Vladimir
24.07.2016
17:35:02
ну если оно не нужно, то и prepend не нужен был
наоборот, prepend позволяет сломать поведение с помощью публичного api

Никита
24.07.2016
17:43:06
Поведение чего?
readable-stream?
Или чего-то другого?

Vladimir
24.07.2016
17:43:37
нет, родного нодвского стрима

Никита
24.07.2016
17:46:37
Ну, это фактически одно и то же. Что не очень хорошо, конечно.
Собственно, это и было причиной проблемы.
В какой-то степени.

Nikita
24.07.2016
17:55:45
здравствуйте. не могу понять, как мне в модуль передать подключение к бд. т.е. заного чтоли коннект инициализировать или как то можно передать?

Andrey
24.07.2016
18:01:25
создай прослойку, где будешь создавать коннект и будешь экспортировать его

Vladimir
24.07.2016
18:01:28
@ChALkeR https://gist.github.com/vkurchatkin/15d731e44785dce4fe4d6b9bba0308b1
вот так можно обойти обойти unpipe при ошибке, раньше это было невозможно

Nikita
24.07.2016
18:02:39

Никита
24.07.2016
18:04:58

Vladimir
24.07.2016
18:05:33
ну весь смысл этого кода, в том чтобы гарантировать вызов хэндлера
раньше его можно было гарантировать

Никита
24.07.2016
18:06:34
Нет, я к тому что код с препендом делает то, что я от него ожидаю — перехватывает ошибку первым и кидает её наверх.

Vladimir
24.07.2016
18:07:05
да, и ломает заложенное в стрим поведение

Google

Никита
24.07.2016
18:08:47
Это можно без process.once('uncaughtException' воспроизвести?

Vladimir
24.07.2016
18:09:20
думаю нет

Никита
24.07.2016
18:09:35
Ну тогда я не вижу в этом ничего особо страшного.
То есть единственный случай, когда не срабатывает анпайп — это когда мы кидаем исключение и валим процесс?

Vladimir
24.07.2016
18:10:30
когда мы не даем остальным хэндлерам выполниться
мне кажется это можно только так сделать

Никита
24.07.2016
18:10:53
(потому что кто не валит процесс в uncaughtException — ссзб)

Vladimir
24.07.2016
18:11:05
но суть не в этом - error хэндлер больше не выполняется первым
если это важно, это плохо
если не важно - то зачем поднимать шума, добавлять api?

Admin
ERROR: S client not available

Никита
24.07.2016
18:11:54
Это с https://github.com/nodejs/node/commit/545807918ee72f55dfefc6a4c557e3d4e2018ee1
Мне надо бежать, потом посмотрю внимательнее.
Ссылка на issue там битая, это https://github.com/nodejs/node-v0.x-archive/issues/6007

Oleh
25.07.2016
07:33:26
всем привет! Ребят, кто сталкивался с такое проблемой:
Error: connect ENOENT /var/run/mysqld/mysqld.sock при коннекте через sequelize к mysql?

Максим
25.07.2016
07:35:39
а пробовал просто создать этот файл?

Oleh
25.07.2016
07:36:40
нетъ

Максим
25.07.2016
07:36:48
ну так)

Oleh
25.07.2016
07:36:49
он его подхватит?

Максим
25.07.2016
07:37:00
ошибка ENOENT означает что файл не найден

Google

Максим
25.07.2016
07:37:12
должен

Oleh
25.07.2016
07:38:24
у меня до этого была ошибка Error: connect ECONNREFUSED 127.0.0.1:3506
и решением было прописать вконфиге "dialectOptions": {
"socketPath": "/var/run/mysqld/mysqld.sock"
}

Максим
25.07.2016
07:39:07
а может у тебя просто демон мускуля не запущен?

Oleh
25.07.2016
07:39:10
но после стала вызываться ошибка, что выше писал

Максим
25.07.2016
07:39:14
sudo service mysqld status
что пишет?

Oleh
25.07.2016
07:39:48
да, не запущен

Максим
25.07.2016
07:40:09
ну тогда удали то что писал в конфиге

Oleh
25.07.2016
07:40:10
я только начал работать с нодой и бд

Максим
25.07.2016
07:40:22
и сделай sudo service mysqld start
ну что, сработало?

Oleh
25.07.2016
07:43:03
нет
нету такого сервиса
Failed to start mysqld.service: Unit mysqld.service not found.

Alexey
25.07.2016
07:43:49
А mysql установлен?

Максим
25.07.2016
07:43:59
кстати да)

Oleh
25.07.2016
07:45:17
да
/etc/init.d/mysqld start
2.11.1
вот версия

Максим
25.07.2016
07:46:58
а ну так вот ты запустил