Mongodb atlas + node.js在本地工作但在推送到Heroku时停止

问题描述 投票:0回答:2

我在node.js网站上创建了一个允许用户申请工作的邮政路线。它本地工作很好并连接到mongodb地图集,但当我将应用程序推送到Heroku并尝试提交作业应用程序的表单时,我的网站超时。我对此很新,不知道该怎么做。谢谢

这是我的代码

var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var Applicant = require('./models/applicants');
var sendAppliedEmail = require('./mail/index.js');

var app = express();
app.set('view engine', 'ejs');
app.use(express.static(__dirname + "/public"));
app.use(express.static(__dirname + '/js'));
var port = process.env.PORT || 3000;

mongoose.connect('mongodb+srv://klaurtar:************@cluster0-nakj7.mongodb.net/test?retryWrites=true', {useNewUrlParser: true});
app.use(bodyParser.urlencoded({extended: true}));

这是我的终端,当我运行heroku日志enter image description here

node.js mongodb heroku mongoose
2个回答
4
投票

我看到MongoNetworkError正在发生,如果事情在本地工作正常而不是在Heroku,那么IP白名单可能就是问题。在我们进行任何连接之前,需要在MongoDB Atlas中将IP列入白名单。如果您不知道IP(heroku),可以将其设置为0.0.0.0/0

IP whiltelisting at MongoDB Atlas (under security tab)

我过去遇到过类似的问题,这对我有用。


1
投票

我用mongodb图集将我的IP列入白名单并更新了我的代码以保存uri作为变量,它现在可用于Heroku制作。这是我的代码,最终工作。

var uri = "mongodb+srv://klaurtar:************@cluster0-nakj7.mongodb.net/test?

retryWrites=true";


mongoose.connect(uri, {useNewUrlParser: true});
var db = mongoose.connection;
© www.soinside.com 2019 - 2024. All rights reserved.