CloudflareのRocket Loaderをオフにした

📅 公開: 2023-09-18

結論

Cloudflare を Rocket Loader が、Pagefind の動作で不具合を引き起こしていたので、管理画面からオフにした。

rocket-loader.min.js が原因だった。

背景

ブログに pagefind を導入したところ、検索フォームが表示されなくて困った。

テスト環境を新規作成

Cloudflare Pages に、test-jibutare-org を新規作成。Pagefind をインストール。

npm install pagefind --save-dev

pagefind.toml をルートディレクトリに作成して記述

site = "public"
output_subdir = "pagefind"

hugo のテンプレートに追加。

<link href="/pagefind/pagefind-ui.css" rel="stylesheet">
<script src="/pagefind/pagefind-ui.js"></script>
<script>
    window.addEventListener('DOMContentLoaded', (event) => {
        new PagefindUI({ element: "#search", showSubResults: true });
    });
</script>

テンプレートの index.html と 404.html にフォームを追加

<div id="search"></div>

コマンドを実行

hugo
npx pagefind

master に push して Cloudflare pages の deploy が終わって、アクセスしてみたらフォームが表示された。

???

原因

テスト環境と本番環境に違いはないはず…

と、ソースを眺めていると、本番環境の </body> 直前に

rocket-loader.min.js

覚えのない .js が…

cloudflare の Rocket Loader の設定をオンしていた。cloudflare の管理画面に戻って、Rocket Loader™ をオフ。ようやく Pagefind の検索フォームが表示された。

原因は、Cloudflare の Rocket Loader だった。