[{"data":1,"prerenderedAt":1673},["ShallowReactive",2],{"\u002Farticles\u002Fblog-4":3,"content-query-5IQzvxDRdx":956},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"category":10,"tag":12,"thumbnail":17,"createdAt":18,"updatedAt":19,"body":20,"_type":950,"_id":951,"_source":952,"_file":953,"_stem":954,"_extension":955},"\u002Farticles\u002Fblog-4","articles",false,"","ブログのセキュリティ強化","サイバー攻撃対策で、Cloudflare Pages ビルドシステム V3 へ移行した件",[11],"programming",[13,14,15,16],"web-standards","vue","ai","information-ed","blog-4.jpg","2026\u002F10\u002F20","2026\u002F10\u002F22",{"type":21,"children":22,"toc":940},"root",[23,31,46,51,55,61,85,90,98,103,106,113,118,123,129,136,149,161,194,197,203,215,221,227,265,268,274,302,322,325,331,336,345,397,400,406,411,454,457,463,468,474,480,485,497,500,506,533,553,556,562,580,618,630,633,639,676,697,700,706,726,739,773,776,782,787,806,811,816,822,828,925,928,932],{"type":24,"tag":25,"props":26,"children":27},"element","p",{},[28],{"type":29,"value":30},"text","　この記事では、",{"type":24,"tag":32,"props":33,"children":34},"ul",{},[35],{"type":24,"tag":36,"props":37,"children":38},"li",{},[39],{"type":24,"tag":40,"props":41,"children":43},"a",{"href":42},"\u002Farticles\u002Fblog-3",[44],{"type":29,"value":45},"🔗ブログのコード修正",{"type":24,"tag":25,"props":47,"children":48},{},[49],{"type":29,"value":50},"のその後について述べます。",{"type":24,"tag":52,"props":53,"children":54},"br",{},[],{"type":24,"tag":56,"props":57,"children":59},"h2",{"id":58},"サイバー攻撃対策でcloudflare-pages-ビルドシステム-v3-へ移行した件",[60],{"type":29,"value":9},{"type":24,"tag":32,"props":62,"children":63},{},[64,75],{"type":24,"tag":36,"props":65,"children":66},{},[67],{"type":24,"tag":40,"props":68,"children":72},{"href":69,"rel":70},"https:\u002F\u002Fnews.ntv.co.jp\u002Fcategory\u002Fsociety\u002Fht7061467279c240788c60160ff42a367e",[71],"nofollow",[73],{"type":29,"value":74},"🔗相次ぐサイバー攻撃や情報漏えいにどう備える？専門家が語る個人や企業の対策",{"type":24,"tag":36,"props":76,"children":77},{},[78],{"type":24,"tag":40,"props":79,"children":82},{"href":80,"rel":81},"https:\u002F\u002Fnews.ntv.co.jp\u002Fcategory\u002Finternational\u002Ff17cb73dbd41429aa8b6cea822924223",[71],[83],{"type":29,"value":84},"🔗【解説】世界のサイト7割で使用「PHP」に重大な脆弱性――AIが発見　急がれる『バグマゲドン』への備え",{"type":24,"tag":25,"props":86,"children":87},{},[88],{"type":29,"value":89},"というようなニュースが連日流れています。",{"type":24,"tag":91,"props":92,"children":97},"img",{"src":93,"alt":94,"className":95},"\u002Fimg\u002Fbuildsecurity.jpg","相次ぐサイバー攻撃や情報漏えいに備えてセキュリティ強化の対策をするシステムエンジニア",[96],"imghc",[],{"type":24,"tag":25,"props":99,"children":100},{},[101],{"type":29,"value":102},"　特に、ハダノのように自分のドメインを持ちサイト管理をしている者にとって、セキュリティ強化は急務です。賃貸より持ち家の方が、防犯防災などの安全対策が重要となるのと同じです。",{"type":24,"tag":52,"props":104,"children":105},{},[],{"type":24,"tag":107,"props":108,"children":110},"h3",{"id":109},"ブログを更新しようとしたらエラーだと",[111],{"type":29,"value":112},"ブログを更新しようとしたらエラーだと？",{"type":24,"tag":25,"props":114,"children":115},{},[116],{"type":29,"value":117},"　10月になり、ブログを更新しても反映されなかったので Cloudflareダッシュボード を開いてみたら、ビルドエラーで止まっていました。",{"type":24,"tag":25,"props":119,"children":120},{},[121],{"type":29,"value":122},"　調べてみると、Cloudflare Pages のビルドシステムが変わったことが原因でした。",{"type":24,"tag":91,"props":124,"children":128},{"src":125,"alt":94,"className":126},"\u002Fimg\u002Fbuilderror.jpg",[127],"imghr",[],{"type":24,"tag":130,"props":131,"children":133},"h4",{"id":132},"背景cloudflare-pages-v3-強制移行のセキュリティ的意義",[134],{"type":29,"value":135},"📌背景：Cloudflare Pages V3 強制移行のセキュリティ的意義",{"type":24,"tag":25,"props":137,"children":138},{},[139,141,147],{"type":29,"value":140},"　2026年9月15日、Cloudflare Pages は従来の V1 ビルドシステムを廃止し、",{"type":24,"tag":142,"props":143,"children":144},"strong",{},[145],{"type":29,"value":146},"V3 ビルドシステム（ベースOS: Ubuntu 22.04、デフォルトNode.js: v22）への完全強制移行",{"type":29,"value":148},"を実施しました。",{"type":24,"tag":25,"props":150,"children":151},{},[152,154,159],{"type":29,"value":153},"　この移行は開発者に互換性対応のコストを強いる一面もありますが、近年の",{"type":24,"tag":142,"props":155,"children":156},{},[157],{"type":29,"value":158},"サプライチェーン攻撃の激激化",{"type":29,"value":160},"を踏まえると、極めて重要なセキュリティ上の防衛策です。",{"type":24,"tag":32,"props":162,"children":163},{},[164,174,184],{"type":24,"tag":36,"props":165,"children":166},{},[167,172],{"type":24,"tag":142,"props":168,"children":169},{},[170],{"type":29,"value":171},"アタックサーフェス（攻撃面）の縮小",{"type":29,"value":173},": 脆弱な古いビルドイメージをプラットフォームから一掃する。",{"type":24,"tag":36,"props":175,"children":176},{},[177,182],{"type":24,"tag":142,"props":178,"children":179},{},[180],{"type":29,"value":181},"EOL（サポート終了）環境の排除",{"type":29,"value":183},": セキュリティホールの温床となる古い Node.js バージョンの利用を強制的にリセットする。",{"type":24,"tag":36,"props":185,"children":186},{},[187,192],{"type":24,"tag":142,"props":188,"children":189},{},[190],{"type":29,"value":191},"認証情報・トークン盗難の防御",{"type":29,"value":193},": サプライチェーン攻撃による環境変数やデプロイトークンの漏洩リスクをインフラレベルで低減する。",{"type":24,"tag":52,"props":195,"children":196},{},[],{"type":24,"tag":107,"props":198,"children":200},{"id":199},"今回直面したトラブルと泥沼化した4つの罠",[201],{"type":29,"value":202},"🛑 今回直面したトラブルと、泥沼化した「4つの罠」",{"type":24,"tag":25,"props":204,"children":205},{},[206,208,213],{"type":29,"value":207},"　Nuxt 3（静的サイト生成: npx nuxt generate）で構築されたブログ（kyodx.com）において、移行直後にビルドクラッシュが発生。解決を試みる中で、",{"type":24,"tag":142,"props":209,"children":210},{},[211],{"type":29,"value":212},"インフラ、モジュール、Git、ローカル環境の 4 つのレイヤーでトラップが連鎖",{"type":29,"value":214},"し、問題が複雑化しました。例によって、 Gemini の助けを借りながら取り組んでいきました。",{"type":24,"tag":91,"props":216,"children":220},{"src":217,"alt":218,"className":219},"\u002Fimg\u002Fbuildtrap.jpg","ウェブサイトのビルドシステム移行作業で多くの罠にはまっていることをAIエージェントに指摘されながら奮闘するシステムエンジニア",[127],[],{"type":24,"tag":130,"props":222,"children":224},{"id":223},"罠依存パッケージchokidarのバージョン不一致",[225],{"type":29,"value":226},"罠①：依存パッケージ（chokidar）のバージョン不一致",{"type":24,"tag":25,"props":228,"children":229},{},[230,232,239,241,247,249,255,257,263],{"type":29,"value":231},"　ビルド環境が新しくなったことで、プロジェクトが要求する Node.js バージョンとのミスマッチが発生。さらに、最新のパッケージ（",{"type":24,"tag":233,"props":234,"children":236},"code",{"className":235},[],[237],{"type":29,"value":238},"chokidar@5.0.0",{"type":29,"value":240},"）が要求する Node.js バージョン（",{"type":24,"tag":233,"props":242,"children":244},{"className":243},[],[245],{"type":29,"value":246},">= 20.19.0",{"type":29,"value":248},"）に対し、既存設定の古いバージョン（",{"type":24,"tag":233,"props":250,"children":252},{"className":251},[],[253],{"type":29,"value":254},"20.11.0",{"type":29,"value":256},"）が読み込まれたため、パッケージインストール（",{"type":24,"tag":233,"props":258,"children":260},{"className":259},[],[261],{"type":29,"value":262},"yarn install",{"type":29,"value":264},"）の段階でビルドが即時クラッシュしました。",{"type":24,"tag":52,"props":266,"children":267},{},[],{"type":24,"tag":130,"props":269,"children":271},{"id":270},"罠githubの特定コミットへの固定cloudflare-pages-の検知バグ",[272],{"type":29,"value":273},"罠②：GitHubの特定コミットへの固定（Cloudflare Pages の検知バグ）",{"type":24,"tag":25,"props":275,"children":276},{},[277,279,285,287,293,295,300],{"type":29,"value":278},"　環境変数を ",{"type":24,"tag":233,"props":280,"children":282},{"className":281},[],[283],{"type":29,"value":284},"wrangler.toml",{"type":29,"value":286}," やダッシュボードで ",{"type":24,"tag":233,"props":288,"children":290},{"className":289},[],[291],{"type":29,"value":292},"NODE_VERSION = \"22\"",{"type":29,"value":294}," に修正したにもかかわらず、Cloudflare 側がいまだに古い ",{"type":24,"tag":233,"props":296,"children":298},{"className":297},[],[299],{"type":29,"value":254},{"type":29,"value":301}," を読み込み続ける怪現象が発生しました。",{"type":24,"tag":32,"props":303,"children":304},{},[305],{"type":24,"tag":36,"props":306,"children":307},{},[308,313,315,320],{"type":24,"tag":142,"props":309,"children":310},{},[311],{"type":29,"value":312},"原因",{"type":29,"value":314},": Cloudflare Pages が GitHub の特定の古いコミットハッシュに固定された状態（スタック）になり、",{"type":24,"tag":142,"props":316,"children":317},{},[318],{"type":29,"value":319},"ローカルからいくら修正をプッシュしても、バグが起きている過去のコードを何度も繰り返しダウンロードしてビルドを回していた",{"type":29,"value":321},"ことが判明しました。",{"type":24,"tag":52,"props":323,"children":324},{},[],{"type":24,"tag":130,"props":326,"children":328},{"id":327},"罠nuxt-seoモジュール群nuxtjsseo-nuxt-schema-orgの内部クラッシュ",[329],{"type":29,"value":330},"罠③：Nuxt SEOモジュール群（@nuxtjs\u002Fseo \u002F nuxt-schema-org）の内部クラッシュ",{"type":24,"tag":25,"props":332,"children":333},{},[334],{"type":29,"value":335},"Node.js のバージョン問題をクリアした直後に発生した、第 2 のビルドクラッシュ：",{"type":24,"tag":25,"props":337,"children":338},{},[339],{"type":24,"tag":233,"props":340,"children":342},{"className":341},[],[343],{"type":29,"value":344},"[error] [GET] \"\u002Fsitemap.xml\": 500 Server Error",{"type":24,"tag":32,"props":346,"children":347},{},[348],{"type":24,"tag":36,"props":349,"children":350},{},[351,355,357,363,365,371,373,379,381,387,389,395],{"type":24,"tag":142,"props":352,"children":353},{},[354],{"type":29,"value":312},{"type":29,"value":356},":パッケージを最新化（",{"type":24,"tag":233,"props":358,"children":360},{"className":359},[],[361],{"type":29,"value":362},"yarn upgrade",{"type":29,"value":364},"）した結果、",{"type":24,"tag":233,"props":366,"children":368},{"className":367},[],[369],{"type":29,"value":370},"@nuxtjs\u002Fsitemap",{"type":29,"value":372}," や ",{"type":24,"tag":233,"props":374,"children":376},{"className":375},[],[377],{"type":29,"value":378},"@nuxtjs\u002Fseo",{"type":29,"value":380}," が新環境（Node.js 22 \u002F 最新の Nitro）の内部構造と互換性を保てず、自動プリレンダリング処理（サイトマップ生成）の段階で内部インスタンスを見失い自爆していました。さらに、",{"type":24,"tag":233,"props":382,"children":384},{"className":383},[],[385],{"type":29,"value":386},"nuxt-schema-org",{"type":29,"value":388}," も内部的なエイリアス（",{"type":24,"tag":233,"props":390,"children":392},{"className":391},[],[393],{"type":29,"value":394},"#site-config",{"type":29,"value":396},"）の解決順序の変更に伴い、Vite\u002FRollup のインポート経路の解決に失敗していました。",{"type":24,"tag":52,"props":398,"children":399},{},[],{"type":24,"tag":130,"props":401,"children":403},{"id":402},"罠ローカル環境gitキャッシュへのバグの残骸の混入",[404],{"type":29,"value":405},"罠④：ローカル環境（Gitキャッシュ）への「バグの残骸」の混入",{"type":24,"tag":25,"props":407,"children":408},{},[409],{"type":29,"value":410},"　Cloudflare 上で Git 連携の切断・再接続を行っても、再び上記サイトマップのエラーが再発しました。",{"type":24,"tag":32,"props":412,"children":413},{},[414],{"type":24,"tag":36,"props":415,"children":416},{},[417,421,423,429,431,437,439,452],{"type":24,"tag":142,"props":418,"children":419},{},[420],{"type":29,"value":312},{"type":29,"value":422},": 本来 ",{"type":24,"tag":233,"props":424,"children":426},{"className":425},[],[427],{"type":29,"value":428},".gitignore",{"type":29,"value":430}," に指定されるべき自動生成フォルダ（",{"type":24,"tag":233,"props":432,"children":434},{"className":433},[],[435],{"type":29,"value":436},".nuxt",{"type":29,"value":438},"）内の、",{"type":24,"tag":142,"props":440,"children":441},{},[442,444,450],{"type":29,"value":443},"過去の壊れた中間コンパイル成果物（",{"type":24,"tag":233,"props":445,"children":447},{"className":446},[],[448],{"type":29,"value":449},"nitro.mjs",{"type":29,"value":451}," など）が、誤ってローカルの Git 管理（リポジトリ内）に含まれてしまっていた",{"type":29,"value":453},"ため、プッシュするたびに「バグの塊」が Cloudflare に強制同期されていました。",{"type":24,"tag":52,"props":455,"children":456},{},[],{"type":24,"tag":107,"props":458,"children":460},{"id":459},"️-泥沼を突破した完全解決へのシーケンス",[461],{"type":29,"value":462},"🛠️ 泥沼を突破した「完全解決へのシーケンス」",{"type":24,"tag":25,"props":464,"children":465},{},[466],{"type":29,"value":467},"　これらの連鎖するトラップを、以下の手順で完全にリセット・解決しました。",{"type":24,"tag":91,"props":469,"children":473},{"src":470,"alt":471,"className":472},"\u002Fimg\u002Fbuildsuccess.jpg","ウェブサイトのビルドシステム移行作業の困難をAIエージェントの助けを借りながら完全解決して喜ぶシステムエンジニア",[127],[],{"type":24,"tag":130,"props":475,"children":477},{"id":476},"_1-ローカルのバグキャッシュを-git-から徹底排除vs-code-ターミナル",[478],{"type":29,"value":479},"1. ローカルのバグキャッシュを Git から徹底排除（VS Code ターミナル）",{"type":24,"tag":25,"props":481,"children":482},{},[483],{"type":29,"value":484},"　Windows（PowerShell）環境において、Git に誤って追跡されていた .nuxt の残骸をインデックスから削除し、物理フォルダもクリアしました。",{"type":24,"tag":486,"props":487,"children":492},"pre",{"className":488,"code":490,"language":491,"meta":7},[489],"language-rm.ps1","# Gitの追跡からキャッシュフォルダを除外\ngit rm -r --cached .nuxt\n\n# ローカルの物理キャッシュフォルダを強制削除（Windows環境用コマンド）\nRemove-Item -Recurse -Force .nuxt\n","rm.ps1",[493],{"type":24,"tag":233,"props":494,"children":495},{"__ignoreMap":7},[496],{"type":29,"value":490},{"type":24,"tag":52,"props":498,"children":499},{},[],{"type":24,"tag":130,"props":501,"children":503},{"id":502},"_2-競合モジュールの無効化コメントアウト",[504],{"type":29,"value":505},"2. 競合モジュールの無効化（コメントアウト）",{"type":24,"tag":25,"props":507,"children":508},{},[509,511,516,518,523,525,531],{"type":29,"value":510},"　根本的な原因である ",{"type":24,"tag":233,"props":512,"children":514},{"className":513},[],[515],{"type":29,"value":370},{"type":29,"value":517}," や、それを裏で勝手に自動展開する親玉モジュール ",{"type":24,"tag":233,"props":519,"children":521},{"className":520},[],[522],{"type":29,"value":378},{"type":29,"value":524}," を ",{"type":24,"tag":233,"props":526,"children":528},{"className":527},[],[529],{"type":29,"value":530},"nuxt.config.ts",{"type":29,"value":532}," から完全にコメントアウト（無効化）しました。",{"type":24,"tag":25,"props":534,"children":535},{},[536,538,551],{"type":29,"value":537},"　これにより、",{"type":24,"tag":142,"props":539,"children":540},{},[541,543,549],{"type":29,"value":542},"Google AdSense（",{"type":24,"tag":233,"props":544,"children":546},{"className":545},[],[547],{"type":29,"value":548},"@nuxtjs\u002Fgoogle-adsense",{"type":29,"value":550},"）など大切な機能の有効状態を維持したまま、エラーを出す処理だけを完全にバイパス",{"type":29,"value":552},"させました。",{"type":24,"tag":52,"props":554,"children":555},{},[],{"type":24,"tag":130,"props":557,"children":559},{"id":558},"_3-究極の解決策別名によるプロジェクトの完全新規作成",[560],{"type":29,"value":561},"3. 【究極の解決策】別名によるプロジェクトの「完全新規作成」",{"type":24,"tag":25,"props":563,"children":564},{},[565,567,578],{"type":29,"value":566},"　既存プロジェクトにロックされていた古いインフラキャッシュや Wrangler 設定の影響を 100% 遮断するため、現在のプロジェクトを一度置き、Cloudflare 上に ",{"type":24,"tag":142,"props":568,"children":569},{},[570,576],{"type":24,"tag":233,"props":571,"children":573},{"className":572},[],[574],{"type":29,"value":575},"nuxthblog2",{"type":29,"value":577}," という別名で完全に新しい Pages プロジェクトを作成",{"type":29,"value":579},"（Continue with GitHub ➔ Pages ワークフロー）しました。",{"type":24,"tag":32,"props":581,"children":582},{},[583,594,605],{"type":24,"tag":36,"props":584,"children":585},{},[586,588],{"type":29,"value":587},"Build command: ",{"type":24,"tag":233,"props":589,"children":591},{"className":590},[],[592],{"type":29,"value":593},"npx nuxt generate",{"type":24,"tag":36,"props":595,"children":596},{},[597,599],{"type":29,"value":598},"Build output directory: ",{"type":24,"tag":233,"props":600,"children":602},{"className":601},[],[603],{"type":29,"value":604},"dist",{"type":24,"tag":36,"props":606,"children":607},{},[608,610,616],{"type":29,"value":609},"Environment variables: ",{"type":24,"tag":233,"props":611,"children":613},{"className":612},[],[614],{"type":29,"value":615},"NODE_VERSION = 22",{"type":29,"value":617},"（後に 24 へ統一）",{"type":24,"tag":25,"props":619,"children":620},{},[621,623,628],{"type":29,"value":622},"　これで、過去の残骸が一切ないクリーンなサーバー空間に、修正済みの最新コードがロードされ、",{"type":24,"tag":142,"props":624,"children":625},{},[626],{"type":29,"value":627},"Nuxt の本番ビルド・デプロイが完全に成功",{"type":29,"value":629},"しました。",{"type":24,"tag":52,"props":631,"children":632},{},[],{"type":24,"tag":130,"props":634,"children":636},{"id":635},"_4-ローカル環境の近代化",[637],{"type":29,"value":638},"4. ローカル環境の近代化",{"type":24,"tag":25,"props":640,"children":641},{},[642,644,650,652,658,660,666,668,674],{"type":29,"value":643},"　最新のパッケージ構成に引きずられ、ローカルでの ",{"type":24,"tag":233,"props":645,"children":647},{"className":646},[],[648],{"type":29,"value":649},"npm run dev",{"type":29,"value":651}," 起動時に ",{"type":24,"tag":233,"props":653,"children":655},{"className":654},[],[656],{"type":29,"value":657},"styleText",{"type":29,"value":659},"（",{"type":24,"tag":233,"props":661,"children":663},{"className":662},[],[664],{"type":29,"value":665},"node:util",{"type":29,"value":667}," 内の最新API）が見つからずクラッシュする現象（",{"type":24,"tag":233,"props":669,"children":671},{"className":670},[],[672],{"type":29,"value":673},"SyntaxError",{"type":29,"value":675},"）が発生。",{"type":24,"tag":32,"props":677,"children":678},{},[679],{"type":24,"tag":36,"props":680,"children":681},{},[682,687,689,695],{"type":24,"tag":142,"props":683,"children":684},{},[685],{"type":29,"value":686},"対応",{"type":29,"value":688},": PCの Node.js を公式サイトから最新の長期サポート版である ",{"type":24,"tag":233,"props":690,"children":692},{"className":691},[],[693],{"type":29,"value":694},"v24.21.0 LTS",{"type":29,"value":696}," へアップデート。VS Code を再起動したことで、ローカルの開発・下書きモードも正常化しました。",{"type":24,"tag":52,"props":698,"children":699},{},[],{"type":24,"tag":130,"props":701,"children":703},{"id":702},"_5-古いプロジェクトの安全な隠居とカスタムドメインの引っ越し",[704],{"type":29,"value":705},"5. 古いプロジェクトの安全な隠居とカスタムドメインの引っ越し",{"type":24,"tag":25,"props":707,"children":708},{},[709,711,717,719,724],{"type":29,"value":710},"　新旧 2 つのプロジェクトが同時に走るのを防ぐため、古い ",{"type":24,"tag":233,"props":712,"children":714},{"className":713},[],[715],{"type":29,"value":716},"nuxthblog",{"type":29,"value":718}," の「Git統合（Git integration）」から接続を ",{"type":24,"tag":142,"props":720,"children":721},{},[722],{"type":29,"value":723},"Disconnect（連携解除）",{"type":29,"value":725}," しました。",{"type":24,"tag":25,"props":727,"children":728},{},[729,731,737],{"type":29,"value":730},"　その後、独自ドメインが古いプロジェクトに掴まれたままだったため、以下のステップでカスタムドメイン（",{"type":24,"tag":233,"props":732,"children":734},{"className":733},[],[735],{"type":29,"value":736},"kyodx.com",{"type":29,"value":738},"）の安全な引っ越しを行いました。",{"type":24,"tag":740,"props":741,"children":742},"ol",{},[743,755],{"type":24,"tag":36,"props":744,"children":745},{},[746,748,753],{"type":29,"value":747},"古いプロジェクトの「Custom domains」から対象ドメインを ",{"type":24,"tag":142,"props":749,"children":750},{},[751],{"type":29,"value":752},"Remove（削除）",{"type":29,"value":754},"。",{"type":24,"tag":36,"props":756,"children":757},{},[758,760,765,767,772],{"type":29,"value":759},"新しい ",{"type":24,"tag":233,"props":761,"children":763},{"className":762},[],[764],{"type":29,"value":575},{"type":29,"value":766}," の「Custom domains」に同ドメインを ",{"type":24,"tag":142,"props":768,"children":769},{},[770],{"type":29,"value":771},"再登録（検証・初期化を経てアクティブ化）",{"type":29,"value":754},{"type":24,"tag":52,"props":774,"children":775},{},[],{"type":24,"tag":107,"props":777,"children":779},{"id":778},"まとめcloudflare-pages-ビルドシステム-v3-への移行は骨が折れるが安全には代えられない",[780],{"type":29,"value":781},"【まとめ】Cloudflare Pages ビルドシステム V3 への移行は骨が折れるが、安全には代えられない",{"type":24,"tag":25,"props":783,"children":784},{},[785],{"type":29,"value":786},"　これが、今回のビルドシステムの移行顛末です。",{"type":24,"tag":25,"props":788,"children":789},{},[790,792,797,799,804],{"type":29,"value":791},"　サーバーサイド言語としての",{"type":24,"tag":142,"props":793,"children":794},{},[795],{"type":29,"value":796},"シェア7～8割のPHP",{"type":29,"value":798},"を、教育DXブログは使っていません。",{"type":24,"tag":142,"props":800,"children":801},{},[802],{"type":29,"value":803},"シェア1割前後のNode.js",{"type":29,"value":805},"を使っているから大丈夫……とは言い切れません。JavaScript系のNode.js、Vue、Nuxtだっていつ危うくなるやもしれません。可能な限り、システムを最新のものにアップデートしたいものです。",{"type":24,"tag":25,"props":807,"children":808},{},[809],{"type":29,"value":810},"　攻撃側がAIを活用してくるなら、防御側もAIを活用すべきです。",{"type":24,"tag":25,"props":812,"children":813},{},[814],{"type":29,"value":815},"　ビルドシステムの移行作業はたいへんですが、AIの助けがあれば恐れることはありません。エラーログをもとに質問することで、必ずやりとげられます。",{"type":24,"tag":91,"props":817,"children":821},{"src":818,"alt":819,"className":820},"\u002Fimg\u002Fbuildupdate.jpg","ウェブサイトのビルドシステム移行作業の困難をAIエージェントの助けを借りながら完全解決して笑顔になるシステムエンジニア",[96],[],{"type":24,"tag":130,"props":823,"children":825},{"id":824},"同じ問題で苦しむ人への教訓",[826],{"type":29,"value":827},"💡 同じ問題で苦しむ人への教訓",{"type":24,"tag":740,"props":829,"children":830},{},[831,855,900],{"type":24,"tag":36,"props":832,"children":833},{},[834,839,841,846,848,853],{"type":24,"tag":142,"props":835,"children":836},{},[837],{"type":29,"value":838},"Cloudflare Pages で設定がどうしても反映されない時",{"type":29,"value":840},":\n　それはコードやダッシュボードのミスではなく、 ",{"type":24,"tag":142,"props":842,"children":843},{},[844],{"type":29,"value":845},"インフラ側が古いコミットやビルドキャッシュを強力に掴んで離さないバグ",{"type":29,"value":847},"である可能性を疑うべきです。その場合、「",{"type":24,"tag":142,"props":849,"children":850},{},[851],{"type":29,"value":852},"プロジェクトを別名で新規作成し直す",{"type":29,"value":854},"」 のが最も手っ取り早く、100% 確実な解決策になります。",{"type":24,"tag":36,"props":856,"children":857},{},[858,863,865,870,872,878,880,898],{"type":24,"tag":142,"props":859,"children":860},{},[861],{"type":29,"value":862},"モジュールのバグに引きずられない",{"type":29,"value":864},":\n　",{"type":24,"tag":233,"props":866,"children":868},{"className":867},[],[869],{"type":29,"value":370},{"type":29,"value":871}," などの外部モジュールが Nitro や Nuxt のコアアップデートの過渡期に 500 エラーを吐く場合、インフラ側の設定（",{"type":24,"tag":233,"props":873,"children":875},{"className":874},[],[876],{"type":29,"value":877},"ignore",{"type":29,"value":879},"）で耐えようとせず、",{"type":24,"tag":142,"props":881,"children":882},{},[883,888,890,896],{"type":24,"tag":233,"props":884,"children":886},{"className":885},[],[887],{"type":29,"value":530},{"type":29,"value":889}," の ",{"type":24,"tag":233,"props":891,"children":893},{"className":892},[],[894],{"type":29,"value":895},"modules",{"type":29,"value":897}," 配列からコメントアウトして完全に黙らせる",{"type":29,"value":899}," べきです。Google 広告（AdSense）モジュールが独立していれば、SEOモジュールを一時的に切っても広告配信や検索ロボットのクローリング（自動巡回）に致命的な悪影響はありません。",{"type":24,"tag":36,"props":901,"children":902},{},[903,908,910,915,917,923],{"type":24,"tag":142,"props":904,"children":905},{},[906],{"type":29,"value":907},"Gitの管理範囲に注意",{"type":29,"value":909},":\n　自動生成ファイル（",{"type":24,"tag":233,"props":911,"children":913},{"className":912},[],[914],{"type":29,"value":436},{"type":29,"value":916}," など）が一度でも Git 追跡に紛れ込むと、ローカルの壊れた環境がクラウドへ永久に同期され続けます。",{"type":24,"tag":233,"props":918,"children":920},{"className":919},[],[921],{"type":29,"value":922},"git rm -r --cached",{"type":29,"value":924}," での定期的なお掃除が有効です。",{"type":24,"tag":52,"props":926,"children":927},{},[],{"type":24,"tag":929,"props":930,"children":931},"hr",{},[],{"type":24,"tag":25,"props":933,"children":934},{},[935],{"type":24,"tag":40,"props":936,"children":937},{"href":42},[938],{"type":29,"value":939},"←前へ　ブログのコード修正",{"title":7,"searchDepth":941,"depth":941,"links":942},2,[943],{"id":58,"depth":941,"text":9,"children":944},[945,947,948,949],{"id":109,"depth":946,"text":112},3,{"id":199,"depth":946,"text":202},{"id":459,"depth":946,"text":462},{"id":778,"depth":946,"text":781},"markdown","content:articles:blog-4.md","content","articles\u002Fblog-4.md","articles\u002Fblog-4","md",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"category":957,"tag":958,"thumbnail":17,"createdAt":18,"updatedAt":19,"body":959,"_type":950,"_id":951,"_source":952,"_file":953,"_stem":954,"_extension":955},[11],[13,14,15,16],{"type":21,"children":960,"toc":1665},[961,965,975,979,982,986,1005,1009,1013,1017,1020,1024,1028,1032,1036,1040,1049,1058,1085,1088,1092,1101,1105,1109,1137,1140,1144,1166,1182,1185,1189,1193,1201,1242,1245,1249,1253,1287,1290,1294,1298,1302,1306,1310,1318,1321,1325,1347,1362,1365,1369,1383,1414,1423,1426,1430,1458,1475,1478,1482,1497,1507,1534,1537,1541,1545,1559,1563,1567,1571,1575,1652,1655,1658],{"type":24,"tag":25,"props":962,"children":963},{},[964],{"type":29,"value":30},{"type":24,"tag":32,"props":966,"children":967},{},[968],{"type":24,"tag":36,"props":969,"children":970},{},[971],{"type":24,"tag":40,"props":972,"children":973},{"href":42},[974],{"type":29,"value":45},{"type":24,"tag":25,"props":976,"children":977},{},[978],{"type":29,"value":50},{"type":24,"tag":52,"props":980,"children":981},{},[],{"type":24,"tag":56,"props":983,"children":984},{"id":58},[985],{"type":29,"value":9},{"type":24,"tag":32,"props":987,"children":988},{},[989,997],{"type":24,"tag":36,"props":990,"children":991},{},[992],{"type":24,"tag":40,"props":993,"children":995},{"href":69,"rel":994},[71],[996],{"type":29,"value":74},{"type":24,"tag":36,"props":998,"children":999},{},[1000],{"type":24,"tag":40,"props":1001,"children":1003},{"href":80,"rel":1002},[71],[1004],{"type":29,"value":84},{"type":24,"tag":25,"props":1006,"children":1007},{},[1008],{"type":29,"value":89},{"type":24,"tag":91,"props":1010,"children":1012},{"src":93,"alt":94,"className":1011},[96],[],{"type":24,"tag":25,"props":1014,"children":1015},{},[1016],{"type":29,"value":102},{"type":24,"tag":52,"props":1018,"children":1019},{},[],{"type":24,"tag":107,"props":1021,"children":1022},{"id":109},[1023],{"type":29,"value":112},{"type":24,"tag":25,"props":1025,"children":1026},{},[1027],{"type":29,"value":117},{"type":24,"tag":25,"props":1029,"children":1030},{},[1031],{"type":29,"value":122},{"type":24,"tag":91,"props":1033,"children":1035},{"src":125,"alt":94,"className":1034},[127],[],{"type":24,"tag":130,"props":1037,"children":1038},{"id":132},[1039],{"type":29,"value":135},{"type":24,"tag":25,"props":1041,"children":1042},{},[1043,1044,1048],{"type":29,"value":140},{"type":24,"tag":142,"props":1045,"children":1046},{},[1047],{"type":29,"value":146},{"type":29,"value":148},{"type":24,"tag":25,"props":1050,"children":1051},{},[1052,1053,1057],{"type":29,"value":153},{"type":24,"tag":142,"props":1054,"children":1055},{},[1056],{"type":29,"value":158},{"type":29,"value":160},{"type":24,"tag":32,"props":1059,"children":1060},{},[1061,1069,1077],{"type":24,"tag":36,"props":1062,"children":1063},{},[1064,1068],{"type":24,"tag":142,"props":1065,"children":1066},{},[1067],{"type":29,"value":171},{"type":29,"value":173},{"type":24,"tag":36,"props":1070,"children":1071},{},[1072,1076],{"type":24,"tag":142,"props":1073,"children":1074},{},[1075],{"type":29,"value":181},{"type":29,"value":183},{"type":24,"tag":36,"props":1078,"children":1079},{},[1080,1084],{"type":24,"tag":142,"props":1081,"children":1082},{},[1083],{"type":29,"value":191},{"type":29,"value":193},{"type":24,"tag":52,"props":1086,"children":1087},{},[],{"type":24,"tag":107,"props":1089,"children":1090},{"id":199},[1091],{"type":29,"value":202},{"type":24,"tag":25,"props":1093,"children":1094},{},[1095,1096,1100],{"type":29,"value":207},{"type":24,"tag":142,"props":1097,"children":1098},{},[1099],{"type":29,"value":212},{"type":29,"value":214},{"type":24,"tag":91,"props":1102,"children":1104},{"src":217,"alt":218,"className":1103},[127],[],{"type":24,"tag":130,"props":1106,"children":1107},{"id":223},[1108],{"type":29,"value":226},{"type":24,"tag":25,"props":1110,"children":1111},{},[1112,1113,1118,1119,1124,1125,1130,1131,1136],{"type":29,"value":231},{"type":24,"tag":233,"props":1114,"children":1116},{"className":1115},[],[1117],{"type":29,"value":238},{"type":29,"value":240},{"type":24,"tag":233,"props":1120,"children":1122},{"className":1121},[],[1123],{"type":29,"value":246},{"type":29,"value":248},{"type":24,"tag":233,"props":1126,"children":1128},{"className":1127},[],[1129],{"type":29,"value":254},{"type":29,"value":256},{"type":24,"tag":233,"props":1132,"children":1134},{"className":1133},[],[1135],{"type":29,"value":262},{"type":29,"value":264},{"type":24,"tag":52,"props":1138,"children":1139},{},[],{"type":24,"tag":130,"props":1141,"children":1142},{"id":270},[1143],{"type":29,"value":273},{"type":24,"tag":25,"props":1145,"children":1146},{},[1147,1148,1153,1154,1159,1160,1165],{"type":29,"value":278},{"type":24,"tag":233,"props":1149,"children":1151},{"className":1150},[],[1152],{"type":29,"value":284},{"type":29,"value":286},{"type":24,"tag":233,"props":1155,"children":1157},{"className":1156},[],[1158],{"type":29,"value":292},{"type":29,"value":294},{"type":24,"tag":233,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":29,"value":254},{"type":29,"value":301},{"type":24,"tag":32,"props":1167,"children":1168},{},[1169],{"type":24,"tag":36,"props":1170,"children":1171},{},[1172,1176,1177,1181],{"type":24,"tag":142,"props":1173,"children":1174},{},[1175],{"type":29,"value":312},{"type":29,"value":314},{"type":24,"tag":142,"props":1178,"children":1179},{},[1180],{"type":29,"value":319},{"type":29,"value":321},{"type":24,"tag":52,"props":1183,"children":1184},{},[],{"type":24,"tag":130,"props":1186,"children":1187},{"id":327},[1188],{"type":29,"value":330},{"type":24,"tag":25,"props":1190,"children":1191},{},[1192],{"type":29,"value":335},{"type":24,"tag":25,"props":1194,"children":1195},{},[1196],{"type":24,"tag":233,"props":1197,"children":1199},{"className":1198},[],[1200],{"type":29,"value":344},{"type":24,"tag":32,"props":1202,"children":1203},{},[1204],{"type":24,"tag":36,"props":1205,"children":1206},{},[1207,1211,1212,1217,1218,1223,1224,1229,1230,1235,1236,1241],{"type":24,"tag":142,"props":1208,"children":1209},{},[1210],{"type":29,"value":312},{"type":29,"value":356},{"type":24,"tag":233,"props":1213,"children":1215},{"className":1214},[],[1216],{"type":29,"value":362},{"type":29,"value":364},{"type":24,"tag":233,"props":1219,"children":1221},{"className":1220},[],[1222],{"type":29,"value":370},{"type":29,"value":372},{"type":24,"tag":233,"props":1225,"children":1227},{"className":1226},[],[1228],{"type":29,"value":378},{"type":29,"value":380},{"type":24,"tag":233,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":29,"value":386},{"type":29,"value":388},{"type":24,"tag":233,"props":1237,"children":1239},{"className":1238},[],[1240],{"type":29,"value":394},{"type":29,"value":396},{"type":24,"tag":52,"props":1243,"children":1244},{},[],{"type":24,"tag":130,"props":1246,"children":1247},{"id":402},[1248],{"type":29,"value":405},{"type":24,"tag":25,"props":1250,"children":1251},{},[1252],{"type":29,"value":410},{"type":24,"tag":32,"props":1254,"children":1255},{},[1256],{"type":24,"tag":36,"props":1257,"children":1258},{},[1259,1263,1264,1269,1270,1275,1276,1286],{"type":24,"tag":142,"props":1260,"children":1261},{},[1262],{"type":29,"value":312},{"type":29,"value":422},{"type":24,"tag":233,"props":1265,"children":1267},{"className":1266},[],[1268],{"type":29,"value":428},{"type":29,"value":430},{"type":24,"tag":233,"props":1271,"children":1273},{"className":1272},[],[1274],{"type":29,"value":436},{"type":29,"value":438},{"type":24,"tag":142,"props":1277,"children":1278},{},[1279,1280,1285],{"type":29,"value":443},{"type":24,"tag":233,"props":1281,"children":1283},{"className":1282},[],[1284],{"type":29,"value":449},{"type":29,"value":451},{"type":29,"value":453},{"type":24,"tag":52,"props":1288,"children":1289},{},[],{"type":24,"tag":107,"props":1291,"children":1292},{"id":459},[1293],{"type":29,"value":462},{"type":24,"tag":25,"props":1295,"children":1296},{},[1297],{"type":29,"value":467},{"type":24,"tag":91,"props":1299,"children":1301},{"src":470,"alt":471,"className":1300},[127],[],{"type":24,"tag":130,"props":1303,"children":1304},{"id":476},[1305],{"type":29,"value":479},{"type":24,"tag":25,"props":1307,"children":1308},{},[1309],{"type":29,"value":484},{"type":24,"tag":486,"props":1311,"children":1313},{"className":1312,"code":490,"language":491,"meta":7},[489],[1314],{"type":24,"tag":233,"props":1315,"children":1316},{"__ignoreMap":7},[1317],{"type":29,"value":490},{"type":24,"tag":52,"props":1319,"children":1320},{},[],{"type":24,"tag":130,"props":1322,"children":1323},{"id":502},[1324],{"type":29,"value":505},{"type":24,"tag":25,"props":1326,"children":1327},{},[1328,1329,1334,1335,1340,1341,1346],{"type":29,"value":510},{"type":24,"tag":233,"props":1330,"children":1332},{"className":1331},[],[1333],{"type":29,"value":370},{"type":29,"value":517},{"type":24,"tag":233,"props":1336,"children":1338},{"className":1337},[],[1339],{"type":29,"value":378},{"type":29,"value":524},{"type":24,"tag":233,"props":1342,"children":1344},{"className":1343},[],[1345],{"type":29,"value":530},{"type":29,"value":532},{"type":24,"tag":25,"props":1348,"children":1349},{},[1350,1351,1361],{"type":29,"value":537},{"type":24,"tag":142,"props":1352,"children":1353},{},[1354,1355,1360],{"type":29,"value":542},{"type":24,"tag":233,"props":1356,"children":1358},{"className":1357},[],[1359],{"type":29,"value":548},{"type":29,"value":550},{"type":29,"value":552},{"type":24,"tag":52,"props":1363,"children":1364},{},[],{"type":24,"tag":130,"props":1366,"children":1367},{"id":558},[1368],{"type":29,"value":561},{"type":24,"tag":25,"props":1370,"children":1371},{},[1372,1373,1382],{"type":29,"value":566},{"type":24,"tag":142,"props":1374,"children":1375},{},[1376,1381],{"type":24,"tag":233,"props":1377,"children":1379},{"className":1378},[],[1380],{"type":29,"value":575},{"type":29,"value":577},{"type":29,"value":579},{"type":24,"tag":32,"props":1384,"children":1385},{},[1386,1395,1404],{"type":24,"tag":36,"props":1387,"children":1388},{},[1389,1390],{"type":29,"value":587},{"type":24,"tag":233,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":29,"value":593},{"type":24,"tag":36,"props":1396,"children":1397},{},[1398,1399],{"type":29,"value":598},{"type":24,"tag":233,"props":1400,"children":1402},{"className":1401},[],[1403],{"type":29,"value":604},{"type":24,"tag":36,"props":1405,"children":1406},{},[1407,1408,1413],{"type":29,"value":609},{"type":24,"tag":233,"props":1409,"children":1411},{"className":1410},[],[1412],{"type":29,"value":615},{"type":29,"value":617},{"type":24,"tag":25,"props":1415,"children":1416},{},[1417,1418,1422],{"type":29,"value":622},{"type":24,"tag":142,"props":1419,"children":1420},{},[1421],{"type":29,"value":627},{"type":29,"value":629},{"type":24,"tag":52,"props":1424,"children":1425},{},[],{"type":24,"tag":130,"props":1427,"children":1428},{"id":635},[1429],{"type":29,"value":638},{"type":24,"tag":25,"props":1431,"children":1432},{},[1433,1434,1439,1440,1445,1446,1451,1452,1457],{"type":29,"value":643},{"type":24,"tag":233,"props":1435,"children":1437},{"className":1436},[],[1438],{"type":29,"value":649},{"type":29,"value":651},{"type":24,"tag":233,"props":1441,"children":1443},{"className":1442},[],[1444],{"type":29,"value":657},{"type":29,"value":659},{"type":24,"tag":233,"props":1447,"children":1449},{"className":1448},[],[1450],{"type":29,"value":665},{"type":29,"value":667},{"type":24,"tag":233,"props":1453,"children":1455},{"className":1454},[],[1456],{"type":29,"value":673},{"type":29,"value":675},{"type":24,"tag":32,"props":1459,"children":1460},{},[1461],{"type":24,"tag":36,"props":1462,"children":1463},{},[1464,1468,1469,1474],{"type":24,"tag":142,"props":1465,"children":1466},{},[1467],{"type":29,"value":686},{"type":29,"value":688},{"type":24,"tag":233,"props":1470,"children":1472},{"className":1471},[],[1473],{"type":29,"value":694},{"type":29,"value":696},{"type":24,"tag":52,"props":1476,"children":1477},{},[],{"type":24,"tag":130,"props":1479,"children":1480},{"id":702},[1481],{"type":29,"value":705},{"type":24,"tag":25,"props":1483,"children":1484},{},[1485,1486,1491,1492,1496],{"type":29,"value":710},{"type":24,"tag":233,"props":1487,"children":1489},{"className":1488},[],[1490],{"type":29,"value":716},{"type":29,"value":718},{"type":24,"tag":142,"props":1493,"children":1494},{},[1495],{"type":29,"value":723},{"type":29,"value":725},{"type":24,"tag":25,"props":1498,"children":1499},{},[1500,1501,1506],{"type":29,"value":730},{"type":24,"tag":233,"props":1502,"children":1504},{"className":1503},[],[1505],{"type":29,"value":736},{"type":29,"value":738},{"type":24,"tag":740,"props":1508,"children":1509},{},[1510,1519],{"type":24,"tag":36,"props":1511,"children":1512},{},[1513,1514,1518],{"type":29,"value":747},{"type":24,"tag":142,"props":1515,"children":1516},{},[1517],{"type":29,"value":752},{"type":29,"value":754},{"type":24,"tag":36,"props":1520,"children":1521},{},[1522,1523,1528,1529,1533],{"type":29,"value":759},{"type":24,"tag":233,"props":1524,"children":1526},{"className":1525},[],[1527],{"type":29,"value":575},{"type":29,"value":766},{"type":24,"tag":142,"props":1530,"children":1531},{},[1532],{"type":29,"value":771},{"type":29,"value":754},{"type":24,"tag":52,"props":1535,"children":1536},{},[],{"type":24,"tag":107,"props":1538,"children":1539},{"id":778},[1540],{"type":29,"value":781},{"type":24,"tag":25,"props":1542,"children":1543},{},[1544],{"type":29,"value":786},{"type":24,"tag":25,"props":1546,"children":1547},{},[1548,1549,1553,1554,1558],{"type":29,"value":791},{"type":24,"tag":142,"props":1550,"children":1551},{},[1552],{"type":29,"value":796},{"type":29,"value":798},{"type":24,"tag":142,"props":1555,"children":1556},{},[1557],{"type":29,"value":803},{"type":29,"value":805},{"type":24,"tag":25,"props":1560,"children":1561},{},[1562],{"type":29,"value":810},{"type":24,"tag":25,"props":1564,"children":1565},{},[1566],{"type":29,"value":815},{"type":24,"tag":91,"props":1568,"children":1570},{"src":818,"alt":819,"className":1569},[96],[],{"type":24,"tag":130,"props":1572,"children":1573},{"id":824},[1574],{"type":29,"value":827},{"type":24,"tag":740,"props":1576,"children":1577},{},[1578,1596,1632],{"type":24,"tag":36,"props":1579,"children":1580},{},[1581,1585,1586,1590,1591,1595],{"type":24,"tag":142,"props":1582,"children":1583},{},[1584],{"type":29,"value":838},{"type":29,"value":840},{"type":24,"tag":142,"props":1587,"children":1588},{},[1589],{"type":29,"value":845},{"type":29,"value":847},{"type":24,"tag":142,"props":1592,"children":1593},{},[1594],{"type":29,"value":852},{"type":29,"value":854},{"type":24,"tag":36,"props":1597,"children":1598},{},[1599,1603,1604,1609,1610,1615,1616,1631],{"type":24,"tag":142,"props":1600,"children":1601},{},[1602],{"type":29,"value":862},{"type":29,"value":864},{"type":24,"tag":233,"props":1605,"children":1607},{"className":1606},[],[1608],{"type":29,"value":370},{"type":29,"value":871},{"type":24,"tag":233,"props":1611,"children":1613},{"className":1612},[],[1614],{"type":29,"value":877},{"type":29,"value":879},{"type":24,"tag":142,"props":1617,"children":1618},{},[1619,1624,1625,1630],{"type":24,"tag":233,"props":1620,"children":1622},{"className":1621},[],[1623],{"type":29,"value":530},{"type":29,"value":889},{"type":24,"tag":233,"props":1626,"children":1628},{"className":1627},[],[1629],{"type":29,"value":895},{"type":29,"value":897},{"type":29,"value":899},{"type":24,"tag":36,"props":1633,"children":1634},{},[1635,1639,1640,1645,1646,1651],{"type":24,"tag":142,"props":1636,"children":1637},{},[1638],{"type":29,"value":907},{"type":29,"value":909},{"type":24,"tag":233,"props":1641,"children":1643},{"className":1642},[],[1644],{"type":29,"value":436},{"type":29,"value":916},{"type":24,"tag":233,"props":1647,"children":1649},{"className":1648},[],[1650],{"type":29,"value":922},{"type":29,"value":924},{"type":24,"tag":52,"props":1653,"children":1654},{},[],{"type":24,"tag":929,"props":1656,"children":1657},{},[],{"type":24,"tag":25,"props":1659,"children":1660},{},[1661],{"type":24,"tag":40,"props":1662,"children":1663},{"href":42},[1664],{"type":29,"value":939},{"title":7,"searchDepth":941,"depth":941,"links":1666},[1667],{"id":58,"depth":941,"text":9,"children":1668},[1669,1670,1671,1672],{"id":109,"depth":946,"text":112},{"id":199,"depth":946,"text":202},{"id":459,"depth":946,"text":462},{"id":778,"depth":946,"text":781},1792671110759]