【问题标题】:MongoDB net::ERR_CONNECTION_REFUSED on server服务器上的 MongoDB net::ERR_CONNECTION_REFUSED
【发布时间】:2019-02-25 03:44:43
【问题描述】:

我正在尝试从托管在服务器上的 react/node 应用程序调用我的数据库。当在本地运行时(使用 nodemon),应用程序在 localhost:3000 运行,服务器托管在端口 4000 上,所以我对 localhost:4000 进行 api 调用。例如,localhost:4000/students 显示存储在 MongoDB 中的学生列表。

我的server.js如下:

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const PORT = 4000;
const cors = require('cors');
const mongoose = require('mongoose');
const studentRoute = require('./student.route');
const config = require('./secrets');

mongoose.Promise = global.Promise;
mongoose.connect(config.dbUri, { useNewUrlParser: true }).then(
  () => {console.log('Database is connected') },
  err => { console.log('Can not connect to the database'+ err)}
);

我正在通过将npm run build 生成的构建文件夹上传到名为“the-wall”(项目名称)的文件夹来将我的应用程序部署到我的站点。因此,要访问该应用程序,我会转到 example.com/the-wall。

我的 mongoDB 使用 MongoDB atlas 托管,并将我的 IP 地址和我认为是服务器的 IP 地址列入白名单。我正在使用 axios 拨打电话,配置如下:


const env = process.env.NODE_ENV; 

export const app = axios.create({
  baseURL:
    env === 'production'
      ? 'https://example.com:4000/'
      : 'http://localhost:4000/',
});

但是,当我尝试访问 example.com:4000/student 时,我收到了 net::ERR_CONNECTION_REFUSED 错误。据我所知,服务器上没有安装 mongoDB。是我使用的 URL 不正确,还是需要进行其他设置?

注意:我也尝试过 example.com/the-wall:4000/student,但我收到了 404 错误。

我尝试调用数据库的方式是否正确? (即端口的 URL 是否正确等)

【问题讨论】:

  • 尝试将 Atlas 上的所有 IP 列入白名单,看看是否是 IP 问题。此外,在连接之前添加mongoose.set('debug', true) 以帮助调试也是一个好主意。这样您就可以检查日志并获得更多详细信息。如果您有一些错误日志,请将它们也包含在编辑中
  • 将所有 IP 列入白名单,但没有任何改变...我有一个 src 文件夹(包含 app.js)和一个 api 文件夹(包含 server.js)。在本地,我从 api 文件夹中运行 nodemon 服务器。我是否必须做一些事情来告诉我的服务器要查找哪个文件? (我认为我的服务器上没有启动数据库连接)

标签: node.js mongodb mongoose


【解决方案1】:

尝试使其在本地与生产数据库一起工作。

如果可以,那是你的服务器上的 IP 配置问题。

如果失败,则是代码配置问题。

【讨论】:

  • 我相信它适用于生产数据库。我正在使用 mongodb srv 连接(不是 mongodb://localhost:27017)并使用 nodemon 托管它。从这里开始工作。
  • 我尝试调用数据库的方式是否正确? (即端口的 URL 是否正确等)
  • 好吧,如果您可以将生产数据库(如example.com:4000)与本地服务器连接,那么问题不在于 mongo 配置。您能否使用 SSH 连接您的应用程序生产服务器,然后尝试使用 telnet 连接数据库服务器。这个想法是检查没有防火墙
  • @MeghanKing 您指定什么 URL 以使其与真正的 MongoDB 数据库一起使用?我有一个,我可以通过我的views.py 中的方法对其进行写入、删除等...但我需要使用我的Angular 服务中的方法,该服务使用consumersMongodbApiUrl = "http://localhost:27017/consumers" 之类的url。 Consumers 是我在数据库中的集合的名称。我应该如何更改此 url 以实际连接到真实数据库?
猜你喜欢
  • 2020-06-21
  • 2015-08-07
  • 1970-01-01
  • 2016-04-16
  • 2018-03-03
  • 2018-08-21
  • 2016-06-11
  • 2019-05-14
  • 2014-11-09
相关资源
最近更新 更多