@nodejs_ru

Страница 93 из 2748
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 при ошибке, раньше это было невозможно

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
а ну так вот ты запустил

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