← Cloudflare Pages / pages / platform
Известные проблемы
Ниже перечислены известные ошибки и проблемы Cloudflare Pages:
Сборки и развертывание
-
На данный момент GitHub и GitLab остаются единственными платформами, поддерживаемыми для автоматических сборок CI/CD. Direct Upload позволяет использовать собственную платформу сборки или загружать файлы с локального компьютера.
-
Инкрементальные сборки в Cloudflare Pages в настоящее время не поддерживаются.
-
Загрузка
/functionsдиректорию через опцию Direct Upload в дашборде не работает (см. Использование Functions в Direct Upload). -
Коммиты и PR из форкнутых репозиториев не создают предварительный просмотр. Поддержка этой возможности появится позже.
Конфигурация Git
- Если вы выполняете развертывание через интеграцию с Git, впоследствии вы не сможете переключиться на Direct Upload. Однако если у вас уже есть проект с интеграцией Git и вы не хотите запускать развертывание при каждом push коммита, вы можете отключить или приостановить автоматические развёртывания. Как вариант, вы можете удалить проект Pages и создать новый, указывающий на другой репозиторий, если вам нужно его обновить.
Конфигурация сборки
-
*.pages.devподдомены в настоящее время нельзя изменить. Если вам нужно изменить ваш*.pages.devподдомен, удалите проект и создайте новый. -
Сборки Hugo по умолчанию используют старую версию. Чтобы использовать последнюю версию Hugo (например,
0.101.0), вам нужно будет задать переменную окружения. ЗадайтеHUGO_VERSIONк0.101.0или версию Hugo по вашему выбору. -
По умолчанию Cloudflare использует Node
12.18.0в среде сборки Pages. Если вам нужна более новая версия Node, обратитесь к Страница конфигурации сборки для параметров настройки. -
Если вы переходите с Netlify, учтите, что Cloudflare не поддерживает функцию Netlify Forms. Pages Functions доступны как аналог Serverless Functions от Netlify.
Custom Domains
-
В настоящее время невозможно добавить собственный домен с
- подстановочный знак, например,
*.domain.com. - Worker, который уже привязан к этому домену.
- подстановочный знак, например,
-
В настоящее время невозможно добавить собственный домен, для которого уже включена политика Cloudflare Access.
-
Load Balancer от Cloudflare не работает с
*.pages.devпроектов;Error 1000: DNS points to prohibited IPпоявится. -
При добавлении собственного домена он не пройдёт проверку, если Cloudflare не сможет подтвердить запрос на SSL-сертификат для этого хоста. Чтобы проверка SSL прошла успешно, убедитесь, что Cloudflare Access или Cloudflare Worker не блокирует запросы к пути проверки:
http://{domain_name}/.well-known/acme-challenge/*. -
Расширенные сертификаты нельзя использовать с Cloudflare Pages из-за приоритизация сертификатов.
Pages Functions
-
Функции в настоящее время не поддерживает добавление и удаление полифиллов, поэтому ваш бандлер (например, webpack) может не запуститься.
-
passThroughOnException()пока не поддерживается для Pages Functions в режиме Advanced Mode (то есть для Pages Functions, использующих_worker.jsфайл). -
passThroughOnException()пока не так надёжна, как в Workers. В настоящее время код Pages Functions оборачивается в try...catch ↗ блок и в противном случае вызыватьenv.ASSETS.fetch(). Это означает, что любые критические сбои (например, превышение лимита процессорного времени или памяти) все равно могут вызывать ошибку.
Включите Access на вашем *.pages.dev домен
Если вы хотите включить Cloudflare Access ↗] для предпросмотровых развёртываний и вашего *.pages.dev домен необходимо:
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
Выберите свой проект Pages.
-
Перейдите в Настройки > Включить политику доступа.
-
Выберите Управление в политике Access, созданной для ваших предварительных развёртываний.
-
В разделе Доступ > Приложения, выберите свой проект.
-
Выберите Настройте.
-
В разделе Public hostname, в Поддомен поле, удалите подстановочный знак (
*) и выберите Save. Возможно, вам потребуется изменить Название приложения на этом шаге, чтобы избежать ошибки.
На этом этапе ваш *.pages.dev домен защищен с помощью Access. Чтобы повторно защитить предварительные развертывания:
- Вернитесь в свой проект Pages > Настройки > Общее > и выберите заново Включить политику доступа.
- Убедитесь, что настроены две политики Access: одна для вашего
*.pages.devдомен и один для предварительных развертываний (*.<YOUR_SITE>.pages.dev), были созданы.
Если у вас есть пользовательский домен и вы защитили *.pages.dev домен за Access, необходимо:
- В Панель управления Cloudflare ↗, перейдите в Zero Trust > Контроль доступа > Приложения. Выберите Создать новое приложение > Самостоятельный хостинг и конфиденциальность.
- Выберите Добавьте общедоступное имя хоста и выберите собственный домен в Домен выпадающем меню.
- Настройте правила доступа, чтобы определить, кто может попасть на страницу аутентификации Access.
- Выберите Создание.
Если у вас возникла проблема, которой нет в списке, сообщите об этом команде в Discord Cloudflare Workers. Получить приглашение можно на discord.cloudflare.com ↗, и поделитесь отчётом об ошибке в канале #pages-general.
Удалите проект с большим числом развёртываний
Удалить проект Pages может не получиться, если у него большое количество (более 100) развёртываний. Команда Cloudflare изучает эту проблему.
В качестве обходного решения можно использовать wrangler pages deployment delete чтобы удалить развертывания по отдельности. После удаления всех развертываний вы сможете удалить проект Pages.
npx wrangler pages deployment delete <DEPLOYMENT_ID> --project-name <PROJECT_NAME>Используйте --force флаг, чтобы пропустить запрос подтверждения и принудительно удалить алиасные деплои.
Чтобы удалить all ваши развёртывания для определенного имени проекта, вы можете выполнить следующий shell-скрипт:
prod_id=""
while :; do
ids=$(npx wrangler pages deployment list --project-name <PROJECT_NAME> --json | jq -r '.[].Id')
to_delete=$(echo "$ids" | grep -v -F -x "$prod_id" | grep .)
[ -z "$to_delete" ] && { echo "Done. Production: $prod_id"; break; }
echo "Deleting $(echo "$to_delete" | wc -l | tr -d ' ') deployments..."
while IFS= read -r id; do
if ! npx wrangler pages deployment delete "$id" --project-name <PROJECT_NAME> --force 2>&1 | tee /tmp/wrangler-del.log | grep -q "Successfully deleted"; then
grep -q "active production deployment" /tmp/wrangler-del.log && prod_id="$id"
fi
done <<< "$to_delete"
doneУчтите, что это не приведёт к удалению активного продакшен-развёртывания, если оно существует.
Использование Pages в качестве Origin в Cloudflare Load Balancer
Cloudflare Load Balancing не будет работать без установленного заголовка Host. Чтобы использовать проект Pages в качестве цели, обязательно выберите Добавьте заголовок Host когда создание пула, и укажите значение заголовка host и адрес конечной точки как ваш pages.dev домен.
См. Использование Cloudflare Pages в качестве источника для полного руководства.