有小伙伴问到 Next.js 部署在 Cloudflare Pages 上的问题。刚好最近踩了不少,就总结一下。
一个崭新的 Next.js 项目要部署到 Pages 上可能会遇到的坑,起码能节省几个小时😂:
部署配置 ⚙️
默认不需要安装 @cloudflare/next-on-pages,选择 Next.js 预设即可,后期需要可以参考文末链接自行安装。
兼容 Flag 🚩
必须在 Pages 后台添加兼容 Node.js 的 flag: nodejs_compat。路径:设置->函数->兼容性标志。
当然如果有 wrangler.toml 也推荐添加。
Runtime 设置 ⏱️
针对 API 路由和页面,只要是不能 Prerender 的,都需要添加如下代码:
```js
export const runtime = 'edge';
```
Next-Auth 集成 🔐
有需要用 Next-Auth 登录的小伙伴注意了!直接安装 next-auth@beta,目前是 V5 版本,默认 latest 通道的 V4 版本是不支持 edge 环境的,不用浪费时间了。
Crypto 模块 🔒
如果要用到 crypto 模块,不能引入 node:crypto,直接用 crypto 模块即可(全局对象),但是可用功能属于一个子集,一般要调用 crypto.subtle 中的功能,一些加密算法可以实现,但是与 node 的 crypto API 不同,可以用 GPT 生成下。
还有其他功能需要注意:
- 更推荐使用 App Router 🛣️
- Image 组件的图片优化是不生效的 🖼️,官方说可以自定义 Loader 改用 CF 上的图片优化。
- App Router 要自己实现 NotFound 页面 🚫。
- ISR 基本不支持,降级为 SSG ⬇️。