Firnis / yandex-metrica-ab-node

MIT License
2 stars 0 forks source link

При активном эксперименте всегда возвращается пустой объект flags #5

Open averholantsev opened 1 year ago

averholantsev commented 1 year ago

Добрый день, при попытке внедрения вашей библиотеке на уровень Gateway API для сайта на Next.js мы получаем всегда пустой объект flags: {}

{ flags: {}, ready: true }

Пробовал пробрасывать cookies и путь с которого производится запрос включая query params но безуспешно. Результат один и тот же.

С клиентской стороны библиотеки yandex-metrica-ab-react - все работает корректно.

Firnis commented 1 year ago

А как именно выглядит вызов функции (без значения clientId)?

averholantsev commented 1 year ago

Последнее, что получилось, это вызов функции на стороне node окружения next.js в getServerSideProps функции

вызов осуществлялся так: const result = await getYandexMetricaAbt(context.req, context.res, 'metrika.xxx');

При успешном попадании в выборку result имел заполненный "i" атрибут, в противном случае undefined image

Firnis commented 1 year ago

Скорее всего запрос отваливался по таймауту. В версии 1.2.0: 1) Увеличил дефолтный таймаут до 400мс 2) Добавил возможность задавать свой таймаут последним параметром

const result = await getYandexMetricaAbt(context.req, context.res, 'metrika.xxx', 1000);

Если повышение таймаута не помогает, то стоит проверить доступность uaas.yandex.net с машины, на которой запускается серверная часть сайта.

Такие задержки могут быть очень неприятными в продакшене, поэтому стоит разобраться почему так долго идут запросы до uaas.yandex.net.

averholantsev commented 1 year ago

Протестирую на следующей неделе, спасибо большое!

Firnis commented 1 year ago

Добавил пример работы с nextjs https://github.com/Firnis/yandex-metrica-ab-node#nextjs

Смущает, что req и res в тайпингах AppContext помечены как опциональные. В документации не нашёл в каких случаях такое может быть.

Firnis commented 1 year ago

@secondfry было время проверить? Что-то получилось?

И для getInitialProps и для getServerSideProps нужно ещё указать вебпаку, что пакет не нужно пихать в клиентский бандл. Я это делал через package.json

"browser": {
    "yandex-metrica-ab-node": false,
}
secondfry commented 1 year ago

Думаю, что правильный призыв, всё-таки, @averholantsev

averholantsev commented 1 year ago

Сделал все по гайдам, в логи выводится следующее: image таймаут ставил от 500 до 10000 млс, все точно также.
Видимо дело в сервере?
С пакетом yandex-metrica-ab-react - все ок...

Firnis commented 1 year ago

Видимо дело в сервере?

Да, похоже, что с сервера нет доступа до uaas.yandex.ru

denisbalyko commented 1 year ago

У меня такая же проблема, доступ к сервису uaas из сервера nextjs есть. Флаги не приходят в проде, причём любопытно, ссылка для проверки для локального варианта – работает. В продакшене уже нет. + свойство i есть всегда.

image