node.js - 无法使用我的 heroku 应用程序连接到 mongodb 数据库?
问题描述
我无法将部署到 Heroku 的 Node.js 应用程序与 MongoDB 数据库连接起来。它在 localhost 上运行良好,但在 Heroku 上运行良好。
在我的日志中,我看到了这个:
MongoNetworkError: failed to connect to server [authproject-shard-00-01-ybey8.mongodb.net:27017] on first connect [MongoNetworkError: connection 4 to authproject-shard-00-01-ybey8.mongodb.net:27017 closed]
custom-environment-variables.json
:
{
"db": "Auth_db"
}
default.json
:
{
"db": "mongodb://localhost/user"
}
db.js
:
const db = config.get("db");
mongoose
.connect(db)
.then(() => console.log("connected to mongodb.."))
.catch(err => console.error("could not connect to mongodb", err));
};
解决方案
您需要在 Heroku 应用程序中配置环境变量。
在控制台中运行:
heroku config:set MONGODB_URI='urlOfYourMongoDatabase'
然后像这样升级你的 db.js:
const mongoose = require('mongoose')
mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/TodoApp', { useNewUrlParser: true })
.then(connect => console.log('connected to mongodb..'))
.catch(e => console.log('could not connect to mongodb', e))
module.exports = {mongoose}
祝你好运!
推荐阅读
- python - Pysmb SMBConnection listPath 函数 - 我可以在模式参数中使用正则表达式吗?
- python - AWS Lambda python函数的长时间冷启动
- python - mitmproxy:撤消编辑的快捷方式
- google-apps-script - 如何在驱动器中创建带有一些文本和表单提交标签的新电子表格
- aws-lambda - ALB 触发器 lamda 函数缺少权限 CDK
- javascript - jquery .one() 计算会检查每个事件吗?
- excel - 用特定数字替换文本框输入
- python - 如何绘制一维误差条形图?- Python
- visual-studio - Libjna 构建 - 链接:致命错误 LNK1104:无法打开文件 'LIBCMT.lib'
- c++ - 堆栈 std::vectors 以生成矩阵,类似于 numpy.vstack