【发布时间】: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 服务器。我是否必须做一些事情来告诉我的服务器要查找哪个文件? (我认为我的服务器上没有启动数据库连接)