Cloudflare Pages の既知の不具合と問題は次のとおりです。
-
自動 CI/CD ビルドで現在サポートしているプラットフォームは、GitHub と GitLab だけです。Direct Upload を使うと、独自のビルドプラットフォームと連携したり、ローカルコンピューターからアップロードしたりできます。
-
Cloudflare Pages では、増分ビルドは現在サポートしていません。
-
ダッシュボードの Direct Upload オプションで
/functionsディレクトリをアップロードしても動作しません(Direct Upload での Functions の利用 を参照)。 -
フォークしたリポジトリからのコミット / PR では、プレビューは作成されません。このサポートは今後追加予定です。
- Git 連携でデプロイした場合、あとから Direct Upload へ切り替えられません。すでに Git 連携のプロジェクトを使っていて、コミットをプッシュするたびにデプロイしたくない場合は、自動デプロイを無効化 / 一時停止 できます。更新が必要な場合は、Pages プロジェクトを削除し、別のリポジトリを指す新しいプロジェクトを作成する方法もあります。
-
*.pages.devサブドメインは、現在変更できません。*.pages.devサブドメインを変更する必要がある場合は、プロジェクトを削除して新しく作成してください。 -
Hugo のビルドは、古いバージョンが自動で実行されます。最新の Hugo(例:
0.101.0)を実行するには、環境変数を設定します。HUGO_VERSIONを0.101.0、または使いたい Hugo のバージョンに設定してください。 -
デフォルトでは、Pages のビルド環境は Node
12.18.0を使います。新しい Node バージョンが必要な場合は、設定オプションについて ビルド設定のページ を参照してください。 -
Netlify から移行する場合、Cloudflare は Netlify の Forms 機能をサポートしていません。Netlify の Serverless Functions に相当するものとして、Pages Functions を利用できます。
-
現在、次のカスタムドメインは追加できません。
- ワイルドカード(例:
*.domain.com)。 - そのドメインにすでに Worker がルーティングされている場合。
- ワイルドカード(例:
-
そのドメインで Cloudflare Access ポリシーがすでに有効な場合、カスタムドメインは現在追加できません。
-
Cloudflare の Load Balancer は
*.pages.devプロジェクトでは動作しません。Error 1000: DNS points to prohibited IPが表示されます。 -
カスタムドメインを追加するとき、そのホスト名で SSL 証明書のリクエストを Cloudflare が検証できないと、ドメインは検証されません。SSL を検証するには、Cloudflare Access または Cloudflare Worker が、検証パス
http://{domain_name}/.well-known/acme-challenge/*へのリクエストを許可していることを確認してください。 -
Advanced Certificates は、Cloudflare for SaaS の 証明書の優先順位 のため、Cloudflare Pages では使えません。
-
Functions は現在、polyfill の追加 / 削除をサポートしていないため、バンドラー(例: webpack)が実行されないことがあります。
-
passThroughOnException()は現在、Advanced Mode の Pages Functions(_worker.jsファイルを使う Pages Functions)では利用できません。 -
passThroughOnException()は現在、Workers ほど堅牢ではありません。Pages Functions のコードを try...catch ↗ ブロックで囲み、env.ASSETS.fetch()の呼び出しにフォールバックしています。そのため、CPU 時間超過やメモリ超過などの重大な障害では、依然としてエラーになることがあります。
プレビューデプロイと *.pages.dev ドメインで Cloudflare Access ↗] を有効にする場合は、次の手順を実行します。
-
Cloudflare ダッシュボードで Workers & Pages ページを開きます。
Workers & Pages を開く ↗ -
Pages プロジェクトを選択します。
-
Settings > Enable access policy を開きます。
-
プレビューデプロイ用に作成された Access ポリシーで Manage を選択します。
-
Access > Applications で、プロジェクトを選択します。
-
Configure を選択します。
-
Public hostname の Subdomain フィールドで、ワイルドカード(
*)を削除して Save を選択します。エラーを避けるため、この手順で Application name を変更する必要がある場合があります。
この時点で、*.pages.dev ドメインは Access の背後で保護されています。プレビューデプロイを再度保護するには、次を実行します。
- Pages プロジェクト > Settings > General に戻り、Enable access policy を再度選択します。
- Access ポリシーが 2 つ作成されていることを確認します。1 つは
*.pages.devドメイン用、もう 1 つはプレビューデプロイ(*.<YOUR_SITE>.pages.dev)用です。
カスタムドメインがあり、*.pages.dev ドメインを Access の背後で保護した場合は、次を実行します。
- Cloudflare ダッシュボード ↗ で Zero Trust > Access controls > Applications を開きます。Create new application > Self-hosted and private を選択します。
- Add public hostname を選択し、Domain ドロップダウンメニューからカスタムドメインを選びます。
- Access の認証ページに到達できる人を定義するよう、アクセスルールを設定します。
- Create を選択します。
一覧にない問題がある場合は、Cloudflare Workers の Discord でチームに知らせてください。discord.cloudflare.com ↗ で招待を受け取り、#pages-general チャンネルで不具合を共有してください。
デプロイ数が多い(100 件超)Pages プロジェクトは、削除できないことがあります。Cloudflare チームはこの問題を追跡しています。
回避策として、wrangler pages deployment delete でデプロイを 1 件ずつ削除できます。デプロイを削除したあと、Pages プロジェクトを削除できます。
npx wrangler pages deployment delete <DEPLOYMENT_ID> --project-name <PROJECT_NAME>確認プロンプトをスキップし、エイリアス付きデプロイを強制削除するには、--force フラグを使います。
特定のプロジェクト名のデプロイを すべて 削除するには、次のシェルスクリプトを実行できます。
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アクティブな本番デプロイがある場合、このスクリプトでは削除されません。
Cloudflare Load Balancing は、ホストヘッダーを設定しないと動作しません。Pages プロジェクトをターゲットにする場合は、プールの作成 時に Add host header を選び、ホストヘッダーの値とエンドポイントアドレスの両方を pages.dev ドメインに設定してください。
手順全体は Cloudflare Pages をオリジンとして使う を参照してください。