You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否可在codegen.yaml中使用@next/env替换环境变量?

解答

可以使用@next/env替换dotenv完成codegen.yaml的变量注入,你遇到的SERVER_API_URL解析为undefined的问题,是@next/env的默认加载逻辑不符合node预加载规则导致的。

原因说明

@next/env没有提供默认的预加载入口,直接使用-r @next/env引入时,仅会导入模块本身,不会自动执行.env文件加载、变量解析、挂载到process.env的逻辑,因此codegen读取不到对应的环境变量。

解决方案

方案1:搭配自定义预加载脚本使用@next/env

  1. 在项目根目录新建预加载脚本load-next-env.js,内容如下:
const { loadEnvConfig } = require('@next/env');
// 传入项目根目录,自动加载对应环境的.env文件并完成变量展开
loadEnvConfig(process.cwd());
  1. 修改codegen启动命令为:
graphql-codegen -r ./load-next-env.js --config codegen.yml

执行后即可正常读取到展开后的环境变量。

方案2:使用dotenv生态实现相同效果

如果你不想新增额外脚本,可以改用dotenv-expand搭配dotenv,其变量展开规则和@next/env完全一致,无需修改现有.env和codegen.yaml配置,直接修改启动命令即可:

graphql-codegen -r dotenv/config -r dotenv-expand/config --config codegen.yml

内容的提问来源于stack exchange,提问作者Martinn3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:57:04