如何不提交.env文件部署网站到Heroku?解决找不到文件报错
解决Heroku部署时找不到.env文件的问题
你的问题核心是Heroku部署时不会包含.gitignore里的文件,本地的.env根本没传到服务器上,自然找不到。不管是用config文件还是dotenv,本质都是依赖本地文件导致的问题,正确的做法是用Heroku的环境变量来管理敏感信息,步骤如下:
移除代码中对本地.env文件的直接依赖
如果你代码里有类似require('./../.env')的直接引入,直接删掉。使用dotenv的话,保留require('dotenv').config()即可——Heroku部署时即使没有.env文件,dotenv也不会抛出错误,只要你通过Heroku设置了对应的环境变量,代码依然能从process.env读取到值。在Heroku上配置环境变量
有两种方式:- 命令行方式:打开终端,执行
heroku config:set 变量名=变量值,比如:
每个环境变量单独执行一次命令。heroku config:set MONGODB_URI="你的MongoDB连接字符串" heroku config:set SECRET_KEY="你的密钥" - 后台管理方式:登录Heroku官网,找到你的应用,进入「Settings」页面,在「Config Vars」区域点击「Reveal Config Vars」,然后逐个添加你的.env里的键值对。
- 命令行方式:打开终端,执行
验证环境变量是否生效
执行heroku config命令,能看到所有已设置的环境变量,确认和你本地.env里的内容一致。调整代码的变量读取逻辑
确保代码中所有用到敏感信息的地方,都是从process.env获取,比如:const mongoose = require('mongoose'); mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true });
这样修改后,重新执行git push heroku main(或者你的分支名),应该就能正常部署了。之前用config文件的问题也是同理——不要把包含敏感信息的config文件加入版本库,而是通过环境变量传递配置。
内容的提问来源于stack exchange,提问作者meglynn22
相关产品推荐
相关产品推荐

