Вопрос или проблема
Я только что создал интернет-магазин с последней версией Payload CMS (шаблон для электронной коммерции), и всё работает хорошо на http://localhost:3000
Я смог создать администратора, войти в административную панель и заполнить базу данных. Я вижу данные в MongoDB Atlas.
Затем я запушил код в репозиторий Github и импортировал его в Vercel (я не использую Payload Cloud!)
Я только что изменил следующие переменные окружения:
# Используется для форматирования ссылок и URL
PAYLOAD_PUBLIC_SERVER_URL=http://localhost:3000
NEXT_PUBLIC_SERVER_URL=http://localhost:3000
на
https://www.exampledomain.com
https://www.exampledomain.com
и сделал развертывание, которое прошло успешно.
Но странно, что когда я зашел на exampledomina.com, главная страница всё ещё находилась в своем исходном состоянии, сообщая, что мне следует создать администратора и заполнить базу данных, хотя URI MongoDB в .env Vercel остаётся прежним.
И когда я пытаюсь зайти на https://www.exampledomain.com/admin
, мне выдает ошибку 404, сообщая, что страница не существует.
Если я попробую https://www.exampledomain.com/admin/login
, он возвращает меня на главную страницу (хотя адрес в верхней части браузера остаётся https://www.exampledomain.com/admin/login
.
А если я нажимаю на ссылки Войти или Создать аккаунт на главной странице, она показывает просто пустую страницу.
Все логи в Vercel имеют статус 200.
/api/graphql
200
Время
12 октября 01:07:05.66 GMT-03:00
Код статуса
200
OK
Хост
www.exampledomain.com
Путь запроса
/api/graphql
Идентификатор запроса
9x9nr-1728706025661-995803c412d8
User-Agent запроса
node
Уровень
Информация
Окружение
производственное
Ветка
main
Кэш
MISS
Тип
Функция без сервера
Функция
/_not-found
Местоположение
Вашингтон, округ Колумбия, США (iad1)
Время выполнения
Node.js 20.x
Время выполнения / Лимит
145ms / 10s
Используемая память / Лимит
140 MB / 1024 MB
Я искал в интернете уже несколько дней, но не смог найти никакого рабочего решения. На самом деле, я даже не смог найти аналогичную проблему, как у меня.
Я что-то упустил в конфигурации Vercel?
Ответ или решение
Проблема, с которой вы столкнулись, связана с разными окружениями, где ваше приложение работает в локальной среде, но не функционирует должным образом после развертывания на Vercel. Давайте разберем возможные причины и шаги, которые помогут вам устранить возникшие проблемы.
1. Проверка конфигурации окружения
Сначала стоит убедиться, что все переменные окружения были правильно настроены. В вашем случае вы изменили следующие переменные:
PAYLOAD_PUBLIC_SERVER_URL=http://localhost:3000
NEXT_PUBLIC_SERVER_URL=http://localhost:3000
на
PAYLOAD_PUBLIC_SERVER_URL=https://www.exampledomain.com
NEXT_PUBLIC_SERVER_URL=https://www.exampledomain.com
Убедитесь, что переменные окружения правильно определены и доступны для серверной части вашего приложения в Vercel. Перепроверьте, совпадают ли значения этих переменных с теми, которые вы используете локально. Также убедитесь, что другие необходимые переменные окружения, такие как MONGODB_URI
, корректно настроены для доступа к вашей базе данных MongoDB Atlas.
2. Проверка состояния базы данных
Вы указали, что данные видны в MongoDB Atlas, но все еще стоит убедиться, что ваше приложение на Vercel имеет доступ к этой базе данных. Проверьте настройки сетевого доступа (IP Whitelisting) в MongoDB Atlas — убедитесь, что IP-адреса, которые использует Vercel, разрешены для подключения.
3. Кэш и конфигурация сборки
Возможно, Vercel использует устаревшую версию вашего приложения. Попробуйте очистить кэш и пересобрать проект. Для этого вы можете воспользоваться опцией развертывания без кэширования в Vercel или просто создать новое развертывание.
4. Логи и отладка
Хотя вы упомянули, что все логи Vercel возвращают статус 200, это не обязательно означает наличие проблем или ошибок с самим приложением. Проверьте логи на наличие предупреждений о любых зависимостях или конфликтах. Используйте console.log()
для отладки кода в вашем приложении на этапе развертывания и проверьте, правильно ли выполняются запросы.
5. Проверьте маршрутизацию
Проблемы с 404 ошибками и тем, что при переходе на страницы, такие как /admin/login
, вы получаете пустую страницу, могут быть связаны с маршрутизацией вашего приложения. Убедитесь, что маршруты правильно настроены для серверного рендеринга, особенно в контексте следующей версии. Проверьте файлы конфигурации (например, next.config.js
), если у вас настроены пользовательские маршруты или редиректы.
6. Права доступа и сессии
Проблемы с доступом к разделам управления (Admin) могут также происходить из-за неправильной конфигурации механизмов аутентификации и авторизации. Убедитесь, что необходимые cookies и сессии правильно работают в вашем развертывании. Особенно это важно, если вы используете сторонние решения для аутентификации.
Заключение
Сосредоточившись на вышеупомянутых пунктах и систематически проверяя каждый аспект конфигурации и настройки, вы сможете выявить и устранить основные причины, по которым ваше приложение не функционирует на Vercel так же, как локально. Если проблема сохраняется, рассмотрите возможность обращения в службу поддержки Vercel или сообщество Payload CMS для более целенаправленной помощи.