Payload e-commerce работает на localhost, но не работает в развертывании Vercel.

Вопрос или проблема

Я только что создал интернет-магазин с последней версией 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 для более целенаправленной помощи.

Оцените материал
Добавить комментарий

Капча загружается...