Ошибки в консоле есть, но ругается на отсутсвие метриковского информера (GET https://mc.yandex.ru/informer/26848689/3_1_FFFFFFFF_EFEFEFFF_0_pageviews 403), вряд ли это причина. ПРи перезапуске появилая такая ошибка: http://localhost:3000/_next/static/webpack/22a985d3c3f801c2b83a.hot-update.json 404 (Not Found) console.log('appData.data', appData.data) - все отдал, все города)
Этот код выполняется для всех страниц, потому что это _App. Это обертка для всего приложения. Потому что города нужны на всех страницах (в том числе в главном меню). Поэтому сделай то, что я написал выше и сообщи результат.
Все понял: я же города здесь http://localhost:3000 ищу, а они тут http://localhost:3000/city Спасибо!! Изучаю код
Тогда уже становится сильно сложнее (тем более что у меня-то ОК работает). Придется вручную искать где именно данные не доходят. И бывают очень неожиданные места (типа нескольких версий одной и той же зависимости). Первый вопрос: в терминале ошибок никаких нет? В терминале должен быть более полный лог серверных ошибок. Второе, копать данные. Вот здесь выполняется запрос и набиваются данные городов: https://github.com/Pivkarta/pivkarta.ru-2/blob/adca23468def277145daefa312cc814aee06be0d/src/pages/_App/index.tsx#L167-L183 На 176 строке добавь console.log('appData.data', appData.data) и обнови страницу. В терминале должно быть типа такого: Если будет null, значит данные по API не пришли вообще. Но должна быть тогда ошибка по идее.
Контексты просмотрел - удобная штука. А вот запросы так и не появились: причем в Playground ответ приходит. Как можно понять, где болячка сидит?
Для начала следует разобраться в самом механизме обмена данными, откуда что вообще берется. Ведь у нас не классическая монолитная CMS на php, где фронт может даже не заработать, если нет подключения к базе данных, а Headless CMS + API-first CMS. То есть условно у нас есть отдельно API и отдельно фронт. В нашей текущей системе фронт все свои данные берет у API-сервера. В свою очередь API-сервер может брать данные у других API-серверов, может из БД тянуть, то есть там своя цепочка может выстраиваться. Но это не очень важно. Когда мы работаем с API, мы не должны задумываться о том, откуда там данные берутся. Нам надо всего лишь запросить нужные нам данные и убедиться, что API-сервер нам эти данные отдает. Для этого запускаем наш проект и заходим http://localhost:3000/api/ Там должен запуститься GraphQL Playground. Только не забываем в нем подправить УРЛ эндпоинта (по умолчанию он ставит http://localhost:3000, а не http://localhost:3000/api/). Там пишем наш GraphQL-запрос и смотрим что он нам возвращает. Если все возвращает как ожидалось, вот тогда только переходим к мониторингу фронта. Для работы с фронтом в повседневке, я рекомендую использовать браузер google chrome. Не потому что он мне очень нравится и я фанат гугла, а просто потому что в других я не нехожу для себя всех необходимых рабочих средств. Но каждый себе сам выбирает свой инструмент, но мои здесь рекомендации будут касатсья именно его. В браузер ставим два расширения: 1. react-dev-tools 2. apollo-dev-tools После установки, если у вас на странице уже открыто dev-tools, надо закрыть и по новой открыть. Первый вообще маст-хэв. Второй я очень редко использую, но для новичков он будет крайне полезным. Вот что в нем можно увидеть: То есть можно увидеть все дерево реакт-компонентов (не HTML DOM, а именно рекат-компоненты, которые рендерят эту конечную страницу). В них же можно увидеть входящие свойства, текущие состояния и т.п. В том числе мы видим ApolloProvider и его ApolloProvider.Provider, который пробрасывает свои данные через контекст вглубь приложения и там любой заинтересованный компонент может подписаться на его данные. Если с контекстами не знакомы еще, обязательно изучите React Context. Если на сайте используется Apollo-client, то скорее всего его провайдер обязательно будет присутствовать, и скорее всего он будет один. И вот в нем мы видим данные, которые сейчас имеются в его кеше. Но там сложно разобраться почему эти данные там есть (то есть какие запросы были выполнены, хотя эта информация там тоже есть), к тому же если запрос указан некешируемый, то его результат и вовсе не будет здесь присутствовать. И есть еще момент: у нас SPA (Single Page Application), к тому же используется SSR, то есть отрисовка на сервере. Нам это сильно усложняет отладу АПИ-запросов по той причине, что при первом заходе на страницу (когда мы еще только указали адрес в браузере), у нас API-данные могут быть запрошены еще на стороне сервера и на страницу записаться в виде JSON, и при ицнициализации аполло-клиента, эти данные попадают в его кеш, и далее, когда в реакте срабатывают вызовы API-запросов через аполло, если для этих запросов есть уже данные в кеше, то на API-сервер такие запросы не отправляются. То есть в таком случае не получается открыть мониторинг сети и посмотреть какие запросы полетели на сервер и какие ответы пришли. И вот как раз в таких случаях и помогает указанный второй инструмент - apollo-dev-tools. Когда он установлен, в dev-tools браузера появляется еще одна вкладка, где можно увидеть все активные GraphQL-запросы и их ответы, а так же данные кеша. Если это не помогло конкретно в вашей ситуации, спрашивайте в комментариях.
Всем привет! Сегодня очередное обновление на сайте: выкатил личные сообщения. То есть можно зайти на страницу пользователя и написать ему сообщение. Только если вы хотите, чтобы другие пользователи могли и вам писать сообщения, зайдите в свой профиль и убедитесь, что это разрешение включено (я не стал включать ее для уже существующих пользователей). Когда вы пишете таким образом сообщение пользователю, создается Чат-комната. По умолчанию она приватная, но ее можно сделать публичной, или пригласить других пользователей (при этом она останется приватной). Только не стоит на приватность сильно рассчитывать, и уже тем более не отправляйте никакие пароли и т.п. Даже банки ломают, а здесь через вложенности запросов вполне можно докопаться к этим сообщениям, теоретически. Суть приватных комнат просто в том, чтобы не мельтишить перед теми, кому не нужно это, и уведомлять тех, кого следует. Собственно, часть сегодняшнего обновления, это именно уведомления. То есть если кто-то напишет вам сообщение, вы увидите уведомление. Вообще, система чатов здесь давно существует, но в крайний масштабный апгрейд фронта и переезд сайта эта часть функционала была частично спрятана и не полностью восстановлена. К примеру, и сейчас можно увидеть чат-комнаты и чат-сообщения, но там пока нельзя написать. То есть технически возможность есть (через АПИ), но интерфейсы не дописаны. Тем не менее, хотя сейчас функционал восстановлен еще в очень малой части, я все же уже о нем сообщаю, чтобы вы знали и, может, пользовались. Потому что все это будет сейчас активно развиваться и использоваться для прокачки функционала совместной работы над проектами. Потому что не получается сразу прям все автоматизировать и все бизнес-логику выстроить, и иногда просто хочется коллеге сообщить "Я на тебя задачу вот там поставил". Вот сейчас вот это уже хотя бы можно сделать. А далее я буду прокачивать новые фишки и сообщать о них.
Запускаю проект и не могу понять, идут запросы в бд или нет. Подскажите ,как правильно контролировать приходьт ли ответы. И уходят ди запросы... Проект сделан на базе https://github.com/prisma-cms/nextj . Сам проект: https://github.com/Pivkarta/pivkarta.ru-2 Для локального запуска надо его склонировать, создать .env с
Не получается пофиксить. Слишком старые зависимости. Пока просто добавил имеющиеся сгенерированные файлы схемы в гит. Работает. Все равно АПИ переписывать.