Cloudflare pages 可以根據 github commit 建立每個 Pull Request 的 staging 網頁
有這樣的 staging deployment 可以有利於 PR review 及 debug。
我們也可以用 Cloudflare 提供的 pages/workers 建立 serverless framework 處理 API,省去架設伺服器的困難及成本。
並用 D1 database 儲存資料,避免 serverless 狀態被清除。
Create 一個 next.js project
設定 config
接著進入資料夾
原本應該就有個 default 的 api/hello
上傳到 Github
到 Cloudflare Workers 和 Pages
建立應用程式
選擇 Pages 的 tab,並選連線至 Git
選擇 project 的 repository
並按 開始設定
選擇 Next.js 的設定
進到 設定 中的 函數
選擇相容性日期: 2022-11-30 (生產跟預覽)
設定相容性旗標: nodejs_compat
(生產跟預覽)
再部署一次
可以在新的 url 下呼叫 api/hello
e.g. https://c030509d.nextjs-pages-example.pages.dev/api/hello
prod-d1-tutorial
如果成功會出現 d1 資訊
wrangler.toml
檔案
schema.sql
檔案
--local
的 flag 則表示只在 local 執行,不會變更到 Cloudflare D1 裡的資料.wrangler
資料夾--local
flag 去掉env.d.ts
的檔案
src/app/api/db/route.ts
的檔案DB
= prod-d1-tutorial
(生產和預覽)api/db
回傳 D1 的資料。 e.g. https://c97ea8ef.nextjs-pages-example.pages.dev/api/db用在 cloudflare 的設定 build:
⚠️ 每次更動 router 都必須執行此指定一次。
也必須重開 server
用 npx wrangler pages dev
啟動 server,並設定以下 flags
e.g. 我的 id = 21c8234f-e616-4128-93bc-b65ff78b73f5
雖然不是真的跟 Cloudflare的 D1 互動,但是還是要用 cloudflare 上的 db id
Github: https://github.com/vivianjeng/nextjs-pages-example
Pages link: https://nextjs-pages-example.pages.dev