Cloudflare Pages 部署 Next.js 应用教程

Cloudflare Pages 部署 Next.js 应用教程

本教程将指导你如何将现有的 Next.js 应用部署到 Cloudflare Pages。

准备工作

  1. 安装部署依赖

    首先,安装 @cloudflare/next-on-pages:

    bash 复制代码
    npm install --save-dev @cloudflare/next-on-pages
  2. 添加 wrangler.toml 配置文件

    在项目根目录创建 wrangler.toml 文件,内容如下:

    toml 复制代码
    name = "my-app"
    compatibility_date = "2024-07-29"
    compatibility_flags = ["nodejs_compat"]
    pages_build_output_dir = ".vercel/output/static"
    
    [env.production.vars]
    NEXTAUTH_URL = "https://your-domain.com"
    NEXTAUTH_SECRET = "your-secret-key"
    # 添加其他环境变量,记得给值加上双引号
  3. 更新 next.config.mjs

    修改 next.config.mjs 文件:

    javascript 复制代码
    import { setupDevPlatform } from '@cloudflare/next-on-pages/next-dev';
    
    /** @type {import('next').NextConfig} */
    const nextConfig = {};
    
    if (process.env.NODE_ENV === 'development') {
      await setupDevPlatform();
    }
    
    export default nextConfig;

    注意:通过 Git 部署时,需要注释掉 setupDevPlatform() 相关代码,也就是可以不添加这部分代码。

  4. 配置 Edge Runtime

    为所有服务端渲染的路由(包括 API 路由)添加以下配置:

    javascript 复制代码
    export const runtime = "edge";
  5. 更新 package.json

    scripts 中添加:

    json 复制代码
    "scripts": {
      "pages:build": "npx @cloudflare/next-on-pages",
      "preview": "npm run pages:build && wrangler pages dev",
      "deploy": "npm run pages:build && wrangler pages deploy"
    }

部署步骤

  1. 创建 Cloudflare Pages 项目

  2. 连接 GitHub 仓库

  3. 配置构建设置

    • 选择 Next.js 框架预设
  4. 设置环境变量(可选)

部署方式

  • 命令行部署: npm run deploy
  • Git 集成: 推送代码到生产分支自动触发部署

常见问题及解决方案

  1. 编译问题:确保本地 npm run build 能通过

  2. 启用 nodejs_compat 兼容性标志
    !\[Pasted image 20240913115015.png]

  3. 环境变量问题:将配置放入 wrangler.toml
    否则 util.ts 的相关读取不到配置。

  4. 路由配置:所有非静态路由都需设置 Edge Runtime

  5. 第三方 API 兼容性:某些 API 可能不兼容 Edge Runtime,需要进行适配或替换

  6. 必须检查所有的是否缺少,否则都会最终失败。

    Please make sure that all your non-static routes export the following edge runtime route segment config:
    export const runtime = 'edge';

通过以上步骤和注意事项,你应该能够成功将 Next.js 应用部署到 Cloudflare Pages。如遇到其他问题,请查阅 Cloudflare 官方文档或寻求社区帮助。

相关推荐
帅次4 小时前
Kotlin Flow 与 StateFlow:UI 单向数据流基础
开发语言·ui·kotlin·stateflow·onlifecycle
艾伦野鸽ggg4 小时前
JavaScript 浏览器本地存储
开发语言·javascript·ecmascript
AOwhisky5 小时前
Python 学习笔记(第十一期)——运维自动化(上·后篇):进程级监控与子进程管理——psutil进阶
运维·开发语言·python·学习·云原生·运维开发
人工干智能5 小时前
Python 的链式调用:一连串的“点”调用
开发语言·python
fliter5 小时前
不用再反复 stash:用 Git Worktree 同时开发多个分支
后端·github
就不掉头发6 小时前
如何优化程序的性能
开发语言
手写码匠6 小时前
MCP协议从零实现:手写一个完整的 Model Context Protocol 服务器与客户端
开发语言·数据结构
良木生香6 小时前
【C++初阶】STL—— Stack & Queue 从入门到精通:容器适配器、迭代器与经典面试题
java·开发语言·c++·算法·zookeeper
咩咩啃树皮6 小时前
第36篇:JavaScript 原型与原型链终极吃透——JS万物皆对象、继承核心原理
开发语言·javascript·ecmascript
Tenifs6 小时前
在 VS Code 中,你可以通过修改全局或项目目录下的 settings.json 文件来彻底关闭 GitHub Copilot
github·copilot