Cloudflare Pages部署NextJS静态站点,环境变量无法读取求助
问题分析与解决步骤
你的核心问题是:用next export生成的静态Next.js站点,环境变量是在构建阶段注入到静态文件中的,而非运行时读取,所以Cloudflare Pages的配置需要匹配这个逻辑,以下是具体排查和解决方法:
- 确保变量命名正确:必须以
NEXT_PUBLIC_开头,你设置的NEXT_PUBLIC_API_URL是符合要求的,检查是否有拼写错误(比如大小写、下划线遗漏)。 - 配置Cloudflare Pages的构建阶段变量:在Cloudflare Pages的项目设置→「环境变量」→「构建变量」中添加
NEXT_PUBLIC_API_URL,而非仅在预览/生产变量里设置。因为静态站点的环境变量是在build过程中被Next.js打包进静态文件的,只有构建阶段的变量才会被读取。 - 确认构建命令正确:在Cloudflare Pages的项目设置→「构建和部署」中,构建命令必须是
next build && next export,确保Next.js完成build(注入环境变量)后再导出静态文件。 - 触发全新构建:修改环境变量或构建配置后,必须手动触发一次新的部署(不要用缓存的构建产物),因为旧的静态文件里没有新注入的环境变量。
- 检查构建日志:部署时查看Cloudflare Pages的构建日志,搜索
NEXT_PUBLIC_API_URL,确认变量是否在构建过程中被正确加载。如果日志中没有出现该变量,检查变量的作用域(是否应用到了当前部署的环境,比如生产/预览)。
另外,不要尝试使用非NEXT_PUBLIC_前缀的变量(比如API_URL),因为这类变量不会被暴露给客户端代码,静态站点无法读取。
内容的提问来源于stack exchange,提问作者Guerrilla
相关产品推荐
相关产品推荐

