免责声明:这是我的第一个问题,因此欢迎提出任何有关如何改善未来的有用批评。我对编程和堆栈溢出还比较陌生,所以如果我不理解某些概念或者我的问题含糊或无法理解,请原谅我。
我的问题:我正在尝试将我的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时,仍然会出现问题。
让我知道是否应该提供有关该问题的更多详细信息,这是我能想到的全部信息。谢谢!