Next前端配套Flask API路由如何正确访问环境变量?
解决Flask对接Next.js时环境变量读取问题
本地开发环境解决方案
Flask 默认不会自动加载 .env.local 文件(Next.js 是自动处理的),这才是你读不到变量的核心原因,和虚拟环境(venv)、端口无关。按以下步骤处理:
安装环境变量加载依赖
在激活虚拟环境的终端中执行:pip install python-dotenv在Flask入口文件中手动加载.env.local
修改你的Flask主文件(比如app.py),添加加载逻辑:from dotenv import load_dotenv import os from flask import Flask # 仅在本地开发时加载.env.local,Vercel部署时会自动跳过 if not os.environ.get('VERCEL'): # 指定加载项目根目录下的.env.local文件 load_dotenv('.env.local') app = Flask(__name__) @app.route('/api/your-route') def your_route(): # 正常读取环境变量 username = os.environ.get('username') return {'username': username}本地运行注意事项
- 确保在激活venv的终端中启动Flask
- 启动Flask时,终端的当前工作目录要和
.env.local所在的项目根目录一致 - 检查
.env.local的格式:变量名和值之间不要有空格,比如username=my-name,不要写成username = my-name
Vercel部署环境解决方案
Vercel控制台配置的环境变量会自动注入到Python运行环境中,无需额外修改代码,直接用os.environ.get('username')即可读取。注意:
- 控制台配置环境变量时,变量名要和本地
.env.local中的保持一致 - 如果是敏感变量,记得勾选"加密"选项
排查步骤
如果还是读不到变量,可以做以下排查:
- 激活venv后执行
pip list,确认python-dotenv已安装 - 在Flask代码中打印所有环境变量,检查是否加载成功:
print(dict(os.environ)) - 确认
.env.local文件没有被添加到.gitignore之外的忽略列表,确保文件存在于项目根目录
内容的提问来源于stack exchange,提问作者pez
相关产品推荐
相关产品推荐

