概要
Cloudflare Workers環境でもMongoDBにアクセスしたいなと思い、とりあえずローカル環境で実現できるか確認したメモ書きです。接続先はMongoDB Atlasでテスト用に作成したDBとします。
前提
- 使用した
wranglerのバージョンは4.92.0です。 - 使用した
mongodbのバージョンは7.2.0です。
手順など
以下の手順にて、mongodbのライブラリを使用しMongoDB Atlasにクエリ発行できることを確認しました。
1. patch-packageのインストール
そのままmongodbのライブラリをインストールしただけでは、おそらくサーバーが起動しません(2026年5月時点だと)。Error: Calling require for "punycode/" in an environment that doesn't expose the require functionのようなエラーが出ると思います。
Cloudflare + MongoDB: How to fix 'Error: Dynamic require of "punycode/" is not supported'の記事で紹介されている通り、patch-packageの対応が必要なようです。記事にも書かれていますが、以下のコマンドで取り急ぎpatch-packageをインストールします。
npm install patch-package
npm pkg set scripts.postinstall="patch-package && npm run cf-typegen"
sed -i '' 's/require("punycode\/")/require("punycode")/g' node_modules/tr46/index.js
npx patch-package tr46
npm install
2. compatibility_flagsの設定
Cloudflare Workers and MongoDBの記事で紹介されている通り、wranglerのconfigファイルにて、compatibility_flagsへnodejs_compatを設定します。