如何为Next.js API路由动态配置运行时,适配开发与生产环境
解决Next.js 13开发/生产环境切换Runtime的简便方法
方法一:利用NODE_ENV自动判断(最简便)
直接在所有API路由文件中通过process.env.NODE_ENV区分环境,自动切换runtime:
export const runtime = process.env.NODE_ENV === 'development' ? 'nodejs' : 'edge';
- 本地执行
npm run dev时,Next.js会自动将NODE_ENV设为development,runtime自动切换为nodejs - 部署到Cloudflare Pages时,环境默认是
production,runtime自动使用edge,无需额外修改配置
方法二:自定义环境变量(更灵活)
如果需要更精准的环境控制,可以通过自定义环境变量实现:
- 在项目根目录创建
.env.development文件,写入:
NEXT_RUNTIME=nodejs
- 创建
.env.production文件,写入:
NEXT_RUNTIME=edge
- 在API路由文件中统一导出:
export const runtime = process.env.NEXT_RUNTIME || 'edge';
注:Next.js会自动加载对应环境的
.env文件;Windows开发环境建议安装cross-env确保环境变量兼容,Cloudflare Pages部署时只需在控制台配置好生产环境变量即可。
你之前用环境变量失效,大概率是因为没有针对不同环境配置对应变量,或是变量未正确注入服务端代码。上述两种方法都能避免手动逐个修改路由文件的繁琐。
内容的提问来源于stack exchange,提问作者Pavindu
相关产品推荐
相关产品推荐

