Cloudflare CI の node:sqlite エラー修正

この記事はCodex製です。

##依頼内容と課題

  • 依頼: CI で失敗している Cloudflare デプロイを復旧する。
  • 失敗ログ: wrangler deploy 中に Could not resolve "node:sqlite" が発生。
  • 課題:
    • next build / opennextjs-cloudflare build は成功するため、失敗はデプロイ時バンドルに限定される。
    • .open-next/server-functions/default/handler.mjsnode:sqlite 参照を持つ依存が混入していた。

##アプローチ

  • 生成済み handler.mjs を調査し、undici/lib/cache/sqlite-cache-store.js の混入を確認。
  • 依存流入点として cheerio 直接利用を特定し、MoneyForward関連の HTML 解析を node-html-parser へ置換。
  • 重複実装を減らすため、旧 API (/api/moneyforward/fetch-data) は monememo 側の抽出関数を再利用する構成へ統一。
  • その後、以下で再検証。
    • bun run typecheck
    • bun run build:cf
    • HOME=/tmp bunx wrangler deploy --dry-run --config wrangler.jsonc

(推論)今回の node:sqlite は Cloudflare Workers の bundling 対象に Node 専用経路が混入したことが主因で、該当ライブラリの runtime import を除外することで解消できる。

##アウトプット

  • 更新: src/lib/monememo/moneyforward-client.ts
    • cheerio 依存を削除
    • node-html-parser でログインフォーム解析・サインイン判定・残高抽出へ置換
    • extractMoneyforwardAccountFromHtml を export 化
  • 更新: src/pages/api/moneyforward/fetch-data.ts
    • 抽出処理の重複を削除
    • extractMoneyforwardAccountFromHtml を利用する形に整理
    • 候補数が少ない場合の warning を返却

検証結果:

  • bun run typecheck: 成功
  • bun run build:cf: 成功
  • HOME=/tmp bunx wrangler deploy --dry-run --config wrangler.jsonc: 成功(node:sqlite エラー再発なし)

##参照した一次情報

##一次情報・一次ソース