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

.env.local定义环境变量后process.env调用不生效如何解决

问题

我已在.env.local文件中定义了相关密钥,但调用process.env.API_KEY时无法获取预期值,功能未正常生效。

已配置的.env.local内容:

API_KEY=xx_xxxxxxxxxxxx

DATABASE_URL=https://xxxxx/db/main

调用环境变量的代码:

export const xata = new BaseClient({
  apiKey: process.env.API_KEY,
  databaseURL: process.env.DATABASE_URL
});

当前项目目录结构:

Project
├─ pages
├─ public
├─ .env.local
└─ helper # 存放需调用api key的文件的目录
排查&解决步骤
  • 先确认框架类型:从pages目录和.env.local的命名规则判断大概率是Next.js项目,如果是其他Node.js框架,本身不会自动加载.env.local文件,需要手动安装dotenv依赖:执行npm i dotenv,在项目入口文件最顶部添加如下代码手动加载:
    require('dotenv').config({ path: '.env.local' })
    
  • Next.js项目环境变量有权限区分:服务端运行的代码可以直接读取不带前缀的私有环境变量,但是如果helper目录下的代码会被打包到客户端(浏览器侧)运行,默认无法读取不带前缀的变量,必须给变量名加NEXT_PUBLIC_前缀才能被客户端识别。修改.env.local里的变量名:
    NEXT_PUBLIC_API_KEY=xx_xxxxxxxxxxxx
    NEXT_PUBLIC_DATABASE_URL=https://xxxxx/db/main
    
    同步修改代码里的引用:
    export const xata = new BaseClient({
      apiKey: process.env.NEXT_PUBLIC_API_KEY,
      databaseURL: process.env.NEXT_PUBLIC_DATABASE_URL
    });
    
  • 检查文件位置和命名:.env.local必须放在项目根目录(和package.json同级),从贴出的结构看位置没问题,但要注意Windows系统默认会隐藏文件扩展名,别把文件存成.env.local.txt这类带隐藏后缀的格式,否则框架识别不到。
  • 修改环境变量后必须重启开发服务:环境变量是在Node服务启动时一次性加载的,热更新不会同步新修改的环境变量,停掉当前运行的dev进程,重新执行启动命令即可。
  • 最后排查拼写问题:可以在代码里加一句console.log(process.env)打印所有已加载的环境变量,确认有没有变量名拼写错误、值前后多加了空格、错误加了引号导致值不符合预期的问题——.env文件里普通字符串不需要额外加引号,加了的话引号会被当成值的一部分读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:30:44