Node.js 使用节点连接到MongoDB服务器在本地主机上没有响应

Node.js 使用节点连接到MongoDB服务器在本地主机上没有响应,node.js,mongodb,express,socket.io,Node.js,Mongodb,Express,Socket.io,我正在尝试将node.js游戏连接到MongoDB集群,以便存储用户名和密码。我已经使用express+socket.io在本地存储了模拟数据库。我试图设置MongoDB atlas来存储用户名和密码,这样当本地主机关闭时,数据不会消失 我已经逐字逐句地试过了。当我测试连接是否成功时,我在终端上输入: node app.js 我的服务器按预期启动并打印服务器已启动。在本教程中,我将看到错误或成功连接消息。但是,当我启动服务器时,我也看不到。我调试这个有困难,因为我没有得到任何回应 下面是我的a

我正在尝试将node.js游戏连接到MongoDB集群,以便存储用户名和密码。我已经使用express+socket.io在本地存储了模拟数据库。我试图设置MongoDB atlas来存储用户名和密码,这样当本地主机关闭时,数据不会消失

我已经逐字逐句地试过了。当我测试连接是否成功时,我在终端上输入:

node app.js
我的服务器按预期启动并打印
服务器已启动
。在本教程中,我将看到错误或成功连接消息。但是,当我启动服务器时,我也看不到。我调试这个有困难,因为我没有得到任何回应

下面是我的app.js文件的开始部分

// Express code
var express = require('express');
var app = express();
var serv = require('http').Server(app); 
var MongoClient = require('mongodb').MongoClient;


const CONNECTION_URL = *uri here* 
const DATABASE_NAME = "bunnyCrossing";

var timeRemaining; 
// If query is '/' (nothing)
app.get('/',function(req,res){
    res.sendFile(__dirname + '/client/index.html');
});

// If query is '/client'. Client can only request things from client folder
app.use('/client',express.static(__dirname + '/client')); 

// replace the uri string with your connection string.
var database, collection;

app.listen(3000, () => {
    MongoClient.connect(CONNECTION_URL, { useNewUrlParser: true }, (error, client) => {
        if(error) {
            throw error;
        }
        database = client.db(DATABASE_NAME);
        collection = database.collection("people");
        console.log("Connected to `" + DATABASE_NAME + "`!");
    });
});
// Server starts listening on port 2000
serv.listen(2000);
console.log("Server started");
我应该在运行node app.js时看到:

server started
Connected to `bunnyCrossing`!
但我只是看到:

server started

没有调用
app.listen
,或者您必须点击
localhost:3000
调用回调以连接到mongo数据库

删除
serv.listen
或将回调添加到
serv.listen
,然后删除
app.listen

serv.listen(2000, function(err) {
  if (err) console.log(err);
  else {
    MongoClient.connect(CONNECTION_URL, { useNewUrlParser: true }, (error, client) => {
        if(error) {
            throw error;
        }
        database = client.db(DATABASE_NAME);
        collection = database.collection("people");
        console.log("Connected to `" + DATABASE_NAME + "`!");
    });
  }
})

没有调用
app.listen
,或者您必须点击
localhost:3000
调用回调以连接到mongo数据库

删除
serv.listen
或将回调添加到
serv.listen
,然后删除
app.listen

serv.listen(2000, function(err) {
  if (err) console.log(err);
  else {
    MongoClient.connect(CONNECTION_URL, { useNewUrlParser: true }, (error, client) => {
        if(error) {
            throw error;
        }
        database = client.db(DATABASE_NAME);
        collection = database.collection("people");
        console.log("Connected to `" + DATABASE_NAME + "`!");
    });
  }
})

您确定您的服务器侦听成功吗
console.log
serv.listen
之后,不要确保您的服务器正在运行,请尝试移动
console.log(“服务器已启动”)
应用程序的回调。听
。尝试将端口200更改为其他端口。@Hongarc当我修复控制台日志并转到localhost 2000时,服务器启动并打印正确的meessage。当我将端口3000更改为端口2000时,会引发一个服务器错误“”错误:侦听EADDRINUSE:::2000“。我知道这意味着端口2000正在使用,所以我只是不知道Mongo应该在哪个端口上。您只需运行
serv.listen
app.listen
,不要同时运行这两个端口。”
app.listen
不意味着您为
MongoClient
选择端口运行
MongoClient
,MongoDb服务器执行此操作,并且您将端口配置为连接到
连接\u URL
您确定您的服务器侦听成功吗
console.log
serv.listen
之后,不要确保您的服务器正在运行,请尝试移动
console.log(“服务器已启动”)
应用程序的回调。听
。尝试将端口200更改为其他端口。@Hongarc当我修复控制台日志并转到localhost 2000时,服务器启动并打印正确的meessage。当我将端口3000更改为端口2000时,会引发一个服务器错误“”错误:侦听EADDRINUSE:::2000“。我知道这意味着端口2000正在使用,所以我只是不知道Mongo应该在哪个端口上。您只需运行
serv.listen
app.listen
,不要同时运行这两个端口。”
app.listen
没有意味着您为
MongoClient
选择端口,您不需要再多一个端口来运行
MongoClient
,MongoDb服务器就可以这样做,并且您可以配置端口来连接
连接\u URL