首页 > 解决方案 > 部署到 Heroku:环境变量未定义

问题描述

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

我的问题:我正在尝试将我的 MERN 堆栈应用程序部署到 heroku(我正在使用 mongodb atlas),并且在我的 heroku 中记录它说我的 mongodb uri 未定义而不是字符串。我的 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 时,问题仍然存在。

如果我应该提供有关该问题的更多详细信息,请告诉我,这就是我能想到的所有内容都会有所帮助。谢谢!

标签: node.jsmongodbheroku

解决方案


推荐阅读