部署到Heroku:环境变量未定义

时间:2020-05-23 21:24:40

标签: node.js mongodb heroku

免责声明:这是我的第一个问题,因此欢迎提出任何有关如何改善未来的有用批评。我对编程和堆栈溢出还比较陌生,所以如果我不理解某些概念或者我的问题含糊或无法理解,请原谅我。

我的问题:我正在尝试将我的MERN堆栈应用程序部署到heroku(即使用mongodb Atlas),并且在我的heroku中记录了我的mongodb uri是undefined而不是字符串的说法。我的uri设置为环境变量,并且在本地计算机上一切正常。当将我的代码推送到heroku时,uri突然未定义。我已经研究了这个问题,并遇到了各种解决方案,但是它们都不起作用。最常见的解决方案是在config vars部分的heroku上设置env变量,但这也不起作用。

错误消息Error [MongooseError]: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string.

我的服务器代码

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时,仍然会出现问题。

让我知道是否应该提供有关该问题的更多详细信息,这是我能想到的全部信息。谢谢!

0 个答案:

没有答案