Next.js项目根目录下.env.local配置不生效,getServerSideProps无法读取环境变量
Next.js .env.local 环境变量不生效解决步骤
- 首先确认
.env.local文件存放位置:必须和next.config.js、package.json处于项目根目录同一层级,不要放在src、public等子目录下。 - 修改环境变量文件后必须重启开发服务:Next.js只会在服务启动时加载一次环境变量,修改
.env.local后需要终止当前npm run dev/yarn dev进程,重新启动服务才能生效。 - 检查
.env.local语法规则:- 等号前后不要加空格,错误写法如
API_KEY = SOME_API_KEY,正确写法为API_KEY=SOME_API_KEY - 非必要不要给值加引号,如果加了引号,读取到的值会自带引号字符
- 等号前后不要加空格,错误写法如
- 卸载额外安装的
dotenv依赖:Next.js内置环境变量加载能力,额外安装的dotenv可能会和内置逻辑冲突,执行npm uninstall dotenv移除即可。 - 验证加载情况:可以在
next.config.js中添加console.log(process.env.API_KEY),启动服务时查看终端输出,如果有对应值说明环境变量已正常加载,问题出在业务代码逻辑;如果依然为undefined可以删除项目下的.next缓存目录后重新启动服务。 - 补充说明:只有需要在客户端组件中读取的环境变量,才需要给变量名加上
NEXT_PUBLIC_前缀,服务端运行的getServerSideProps、接口路由等场景不需要此前缀。
内容的提问来源于stack exchange,提问作者devAR
相关产品推荐
相关产品推荐

