node.js - 部署到 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 时,问题仍然存在。
如果我应该提供有关该问题的更多详细信息,请告诉我,这就是我能想到的所有内容都会有所帮助。谢谢!
解决方案
推荐阅读
- r - 忽略未知参数:point.colour.1
- postfix - traceroute -T -p 25 alt4.aspmx.l.google.com
- linux - 如果列包含数字,则插入文本
- angular - 角度构建项目
- c# - 图表 X 轴标签错误
- android - 如何删除应用程序为后台时出现的单个 fcm 通知?
- tabs - Applescript - 打开一个新标签
- git - 以编程方式获取 git 将使用 `git checkout -` 跳转到的修订版
- php - Laravel,数据表,低效查询
- requirejs - RequireJS 2.3.5 - 如何使用 JQuery 3.2 和 Bootstrap 3.3.7