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

Next前端配套Flask API路由如何正确访问环境变量?

解决Flask对接Next.js时环境变量读取问题

本地开发环境解决方案

Flask 默认不会自动加载 .env.local 文件(Next.js 是自动处理的),这才是你读不到变量的核心原因,和虚拟环境(venv)、端口无关。按以下步骤处理:

  1. 安装环境变量加载依赖
    在激活虚拟环境的终端中执行:

    pip install python-dotenv
    
  2. 在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}
    
  3. 本地运行注意事项

    • 确保在激活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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:11:01