コンテンツにスキップ

ページのデバッグ

Pagesプロジェクトを設定する際、サイトの正常なデプロイを妨げるさまざまなエラーに遭遇することがあります。このガイドでは、一般的なエラーとその解決策の概要を示します。

ビルドログを確認する

Pagesビルドログでビルドエラーを確認できます。ビルドログにアクセスするには:

  1. Cloudflareダッシュボードにログインします。
  2. アカウントホームで、Workers & Pagesに移動します。
  3. 概要で、Pagesプロジェクトを選択し、ビルドを表示します。

Cloudflareダッシュボードにログインした後、上記の手順に従ってビルドログにアクセスします

ビルドログに含まれる可能性のあるエラーは、以下のセクションに示されています。

ビルド環境の初期化

このステップでの可能なエラーは、Git統合中の不適切なインストールが原因である可能性があります。

GitHubでこれを修正するには:

  1. GitHubアカウントにログインします。
  2. ユーザーアイコンから設定に移動し、統合の下にあるアプリケーションを見つけます。
  3. Cloudflare Pagesを見つけて、設定を選択し、下にスクロールしてアンインストールを選択します。
  4. CloudflareダッシュボードでGitHubユーザー/組織を再認証します。

GitLabでこれを修正するには:

  1. GitLabアカウントにログインします。
  2. ユーザーアイコンから設定に移動し、アプリケーションを選択します。
  3. Cloudflare Pagesを見つけて、下にスクロールして取り消すを選択します。

リポジトリを正常にリンクするには、メンテイナー以上の役割が必要であることに注意してください。そうでない場合、ビルドは失敗します。

Gitリポジトリのクローン

このステップでの可能なエラーは、Git Large File Storage (LFS)の不足が原因である可能性があります。LFSの使用状況は、GitHubおよびGitLabのドキュメントを参照して確認してください。

また、ルートディレクトリの.gitmodulesファイルに移動して、サブモジュールの設定を確認してください。このファイルには、pathurlの両方のプロパティが含まれている必要があります。

有効な設定の例:

[submodule "example"]
path = example/path
url = git://github.com/example/repo.git

無効な設定の例:

[submodule "example"]
path = example/path

または

[submodule "example"]
url = git://github.com/example/repo.git

アプリケーションのビルド

このステップでの可能なエラーは、Pagesプロジェクトの設定不良が原因である可能性があります。ビルドコマンド、出力フォルダ、および環境変数に不正な設定がないか確認してください。

Cloudflareのグローバルネットワークへのデプロイ

このステップでの可能なエラーは、不正なPages Functions設定が原因である可能性があります。Functionsの設定に関する詳細は、Functionsのドキュメントを参照してください。

Functionsを使用していない場合や、Functions設定にエラーがないことを確認した場合は、Cloudflareネットワークの問題がビルド失敗の原因となっている可能性があるため、Cloudflare Statusサイトを確認してください。

pages.devとカスタムドメインの違い

カスタムドメインがCloudflareを通じてプロキシ(オレンジの雲)されている場合、キャッシュなどのゾーン設定が適用されます。

新しいコンテンツが表示されない問題が発生している場合は、Cloudflareダッシュボードのルール > ページルールに移動し、すべてキャッシュが有効になっているページルールを確認してください。存在する場合は、このルールを削除してください。Pagesは独自のキャッシュを管理します。

カスタムドメインでエラーが発生しているが、pages.devドメインでは発生していない場合は、CloudflareダッシュボードのDNS > レコードに移動し、プロジェクトのDNSレコードをDNSのみ(グレーの雲)に設定してください。エラーが続く場合は、ゾーンの設定を確認してください。

ドメインが検証中で停止している

カスタムドメインがCloudflareダッシュボードで検証中のステージから移動していない場合は、以下のデバッグ手順を参照してください。

HTTP検証がブロックされている

PagesはHTTP検証を使用し、検証中にHTTPエンドポイントにアクセスする必要があります。他のCloudflare製品(AccessリダイレクトWorkerなど)が妨げている場合、検証は完了できません。

これを確認するには、curlコマンドを使用して、ドメインに対して/.well-known/acme-challenge/randomstringを実行します。例えば:

Terminal window
curl -I https://example.com/.well-known/acme-challenge/randomstring
HTTP/2 302
date: Mon, 03 Apr 2023 08:37:39 GMT
location: https://example.cloudflareaccess.com/cdn-cgi/access/login/example.com?kid=...&redirect_url=%2F.well-known%2Facme-challenge%2F...
access-control-allow-credentials: true
cache-control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
server: cloudflare
cf-ray: 7b1ffdaa8ad60693-MAN

上記の例では、LocationヘッダーによってCloudflare Accessにリダイレクトされています。この場合、ドメインが検証されるまでAccessを無効にする必要があります。ドメインが検証された後、Accessを再度有効にできます。

リダイレクトルールやWorkerの例でも同様のことを行う必要があります。

CAAレコードが欠落している

HTTP検証をブロックするものがない場合、Certification Authority Authorization (CAA)レコードが欠落している可能性があります。これは、Universal SSLを無効にした場合や、外部プロバイダーを使用している場合に起こりやすいです。

これを確認するには、カスタムドメインのエイペックス(またはゾーン、これはサブドメインゾーンの場合)でdigを実行します。例えば:

Terminal window
dig CAA example.com
; <<>> DiG 9.10.6 <<>> CAA example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59018
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com. IN CAA
;; ANSWER SECTION:
example.com. 300 IN CAA 0 issue "amazon.com"
;; Query time: 92 msec
;; SERVER: 127.0.2.2#53(127.0.2.2)
;; WHEN: Mon Apr 03 10:15:51 BST 2023
;; MSG SIZE rcvd: 76

上記の例では、Amazonが証明書を発行することを許可する単一のCAAレコードのみがあります。

これを解決するには、Cloudflareが証明書を発行するために使用するすべての認証機関(CA)を許可する以下のCAAレコードを追加する必要があります:

example.com. 300 IN CAA 0 issue "comodoca.com"
example.com. 300 IN CAA 0 issue "digicert.com; cansignhttpexchanges=yes"
example.com. 300 IN CAA 0 issue "letsencrypt.org"
example.com. 300 IN CAA 0 issue "pki.goog; cansignhttpexchanges=yes"
example.com. 300 IN CAA 0 issuewild "comodoca.com"
example.com. 300 IN CAA 0 issuewild "digicert.com; cansignhttpexchanges=yes"
example.com. 300 IN CAA 0 issuewild "letsencrypt.org"
example.com. 300 IN CAA 0 issuewild "pki.goog; cansignhttpexchanges=yes"

ゾーンホールド

ゾーンホールドは、Pagesがゾーンホールドの下にあるホスト名にカスタムドメインを追加するのを防ぎます。

ゾーンホールドのあるホスト名にカスタムドメインを追加するには、カスタムドメイン設定プロセス中に一時的にゾーンホールドを解除する必要があります。

カスタムドメインの設定が正常に完了したら、ゾーンホールドを再設定できます。

リソース

ビルドエラーに関する追加のガイダンスが必要な場合は、Cloudflareアカウントチーム(エンタープライズ)に連絡するか、サポートセンターを参照してCloudflareサポートへの連絡方法を確認してください。

また、Cloudflare Developers DiscordのPagesセクションで質問することもできます。