Express构建的Node.js后端环境变量API_KEY显示undefined问题
解决Node.js Express后端环境变量显示undefined的问题
问题分析
核心问题是dotenv未正确加载根目录下的.env文件,导致process.env.REACT_APP_OPENAI_API_KEY返回undefined。从项目结构来看,server.js位于src目录,而.env在项目根目录,dotenv默认从当前执行脚本的目录查找.env,因此无法定位到根目录的配置文件。
解决方案
1. 手动指定.env文件路径
修改server.js中的dotenv配置,通过ES模块的API获取当前文件路径,拼接出根目录下.env的绝对路径:
import express from "express"; import cors from "cors"; import axios from "axios"; import dotenv from "dotenv"; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; // 获取当前文件的绝对路径与目录 const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); // 指定根目录下的.env文件路径 dotenv.config({ path: join(__dirname, '../.env') }); const PORT = 8000; const app = express(); app.use(cors()); app.get("/hello", (req, res) => { res.json("Hello World"); }); app.get("/test-cases", async (req, res) => { const API_KEY = process.env.REACT_APP_OPENAI_API_KEY; console.log(API_KEY); // 后续业务逻辑... });
2. 可选:规范环境变量命名
REACT_APP_是Create React App识别前端环境变量的约定,后端无需遵循。可以修改.env中的变量名简化代码:
.env文件修改:
# Not a real API KEY!!!!! OPENAI_API_KEY=sk-NgPdmiXotwLWvasdsddsfkFJG4bnvnod3BwRPTsPaeUv
server.js中读取:
const API_KEY = process.env.OPENAI_API_KEY;
3. 排查验证点
若修改后仍未解决,检查以下内容:
- 确认
.env文件名无拼写错误(如误写为.env.local) - 确保变量赋值无多余空格(如
KEY= value会导致值包含空格) - 重新执行
npm install dotenv验证依赖安装完整性
内容的提问来源于stack exchange,提问作者dcblanton78
相关产品推荐
相关产品推荐

