Nuxt.js部署至Heroku后process.env.variable失效问题求助
核对变量名称的精确匹配
确认Heroku配置变量的名称和代码中process.env.variable的引用完全一致,包括大小写——Heroku的配置变量严格区分大小写,MY_VAR和my_var会被识别为两个不同变量。验证变量在Heroku环境中的存在性
通过Heroku CLI执行heroku config -a 你的应用名称,查看输出的变量列表,确认目标变量存在且值正确。如果列表中没有该变量,重新执行添加命令:heroku config:set VARIABLE_NAME=对应值 -a 你的应用名称。检查变量引用的时机
确保代码在Heroku环境变量加载完成后才读取process.env.variable。比如模块初始化阶段直接读取变量,可能因环境变量未注入导致undefined,建议将变量读取逻辑放在运行时(如请求处理函数内部)。排查dotenv等工具的冲突
如果本地开发使用了dotenv,需确保部署到Heroku时仅在开发环境调用require('dotenv').config(),避免加载本地.env文件干扰Heroku的配置变量。确认构建/打包流程的正确性
若应用需要构建(如React、Vue项目),必须保证构建过程在Heroku环境中执行,这样环境变量才能注入到构建产物中。本地构建后再上传的话,只会打包本地.env的变量,Heroku的配置无法生效。可修改package.json的scripts确保构建在服务器端执行:"scripts": { "build": "react-scripts build", "start": "node server.js" }查看Heroku应用日志
执行heroku logs --tail -a 你的应用名称,查看应用启动和运行日志,排查是否有环境变量加载相关的错误提示,比如权限问题、注入失败信息。
内容的提问来源于stack exchange,提问作者Henry

