Node.js 部署到Heroku:Env变量未定义

Node.js 部署到Heroku:Env变量未定义,node.js,mongodb,heroku,Node.js,Mongodb,Heroku,免责声明:这是我的第一个问题,因此欢迎对如何使未来的产品更好提出任何有益的批评。我对编程和堆栈溢出也比较陌生,所以如果我不理解一些概念,或者我的问题模糊或不可理解,请原谅我 我的问题:我正在尝试将我的MERN stack应用程序部署到heroku(我正在使用mongodb atlas),在我的heroku日志中,它说我的mongodb uri未定义,而不是字符串。我的uri被设置为一个环境变量,在我的本地机器上一切正常。当我把代码推到heroku时,uri突然没有定义。我对这个问题进行了研究,找

免责声明:这是我的第一个问题,因此欢迎对如何使未来的产品更好提出任何有益的批评。我对编程和堆栈溢出也比较陌生,所以如果我不理解一些概念,或者我的问题模糊或不可理解,请原谅我

我的问题:我正在尝试将我的MERN stack应用程序部署到heroku(我正在使用mongodb atlas),在我的heroku日志中,它说我的mongodb uri未定义,而不是字符串。我的uri被设置为一个环境变量,在我的本地机器上一切正常。当我把代码推到heroku时,uri突然没有定义。我对这个问题进行了研究,找到了各种各样的解决方案,但都不管用。最常见的解决方案是在config vars部分的heroku上设置env变量,但这也不起作用

错误消息
错误[MongooseError]:`openUri()`的`uri`参数必须是一个字符串,且为“未定义”。确保`mongoose.connect()`或`mongoose.createConnection()`的第一个参数是字符串。

我的服务器代码

const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose')

require('dotenv').config();

const app = express();
const port = process.env.PORT || 5000;

app.use(cors());
app.use(express.json());

const uri = process.env.ATLAS_URI;
console.log(uri)
mongoose.connect(uri, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }
);
const connection = mongoose.connection;
connection.once('open', () => {
    console.log('MongoDB database connection made, yay!')
})

const exerciseRouter = require('./routes/exercises')

app.use('/exercises', exerciseRouter);

app.listen(port, () => {
    console.log(`Server is running on port ${port}`)
})
当我在本地机器上运行此代码时,console.log()函数会打印出正确的uri,数据库连接成功,但当我将此代码推送到heroku时,问题仍然会出现


让我知道,如果我应该提供任何关于这个问题的更多细节,这是我所能想到的一切,这将是有益的。谢谢

如果运行
heroku-config
它会返回什么吗?@Joe它会返回我的env variableWait,我想我刚刚意识到,当运行
heroku-logs
时,它会返回以前可能已修复的所有错误吗?因为也许我看到的是已经修复的旧错误。如果是这样的话,有没有办法检查这个问题?
heroku restart
应该用新的日志重新开始。谢谢!错误似乎消失了,所以在heroku中添加配置变量似乎真的解决了这个问题,再次感谢!