Javascript 错误:无法读取属性';关闭';空的

Javascript 错误:无法读取属性';关闭';空的,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,你好,亲爱的社区,我想知道为什么我在尝试使用mongodb和nodejs时会出现这个错误 const MongoClient = require('mongodb').MongoClient; MongoClient.connect('mongodb://localhost:27017/TodoApp', (err, db) => { if (err) { console.log('Unable to connect to MongoDB server.')

你好,亲爱的社区,我想知道为什么我在尝试使用mongodb和nodejs时会出现这个错误

const MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/TodoApp', (err, db) => {
    if (err) {
        console.log('Unable to connect to MongoDB server.')
    }else{
        console.log('Connected to MongoDB server.')
    }
    db.close();
});
控制台中的输出:

无法连接到MongoDB服务器。 C:\Users\eljubec\Desktop\node todo api\node_modules\mongodb\lib\mongo_client.js:421 失误 ^

TypeError:无法读取null的属性“close” 在MongoClient.connect(C:\Users\eljubec\Desktop\node todo api\playerd\mongodb connect.js:9:8) 在connectCallback(C:\Users\eljubec\Desktop\node todo api\node\u modules\mongodb\lib\mongo\u client.js:527:5) 在C:\Users\eljubec\Desktop\node todo api\node_modules\mongodb\lib\mongo_client.js:418:11 在进程中。_tick回调(内部/process/next_tick.js:150:11)


您可能需要检查MongoDB服务是否已在给定端口上启动并运行。打开命令提示符(
WindowsKey+R->cmd->OK
)并运行以下命令:

netstat -a | find "27017"
这将为您提供如下输出:

TCP    127.0.0.1:27017        <MACHINE_NAME>:0         LISTENING
TCP 127.0.0.1:27017:0侦听
如果没有看到这一行,则需要启动MongoDB或确保它在默认端口上运行


第二个错误
“无法读取null的属性'close'”
,原因很简单,因为连接失败,因此
db
变量将保存一个
null
值,根据该值,显然无法运行
close()
。您可能希望将该
close()
语句移动到
else
语句中。

您可能希望检查您的MongoDB服务是否已在给定端口上启动并运行。打开命令提示符(
WindowsKey+R->cmd->OK
)并运行以下命令:

netstat -a | find "27017"
这将为您提供如下输出:

TCP    127.0.0.1:27017        <MACHINE_NAME>:0         LISTENING
TCP 127.0.0.1:27017:0侦听
如果没有看到这一行,则需要启动MongoDB或确保它在默认端口上运行


第二个错误
“无法读取null的属性'close'”
,原因很简单,因为连接失败,因此
db
变量将保存一个
null
值,根据该值,显然无法运行
close()
。您可能希望将
close()
语句移动到
else
语句中。

如果连接失败,
db
将变为
null
。在
else
块中移动close命令。显然,连接MongoDB时出现问题。您为什么不记录
err
以查看它是什么?尝试在第一个if语句中添加“console.log(err)”,并向我们显示结果。其他注释说:您的输出显示连接到数据库的错误。当数据库未连接时,您的db对象将为null,因此没有close方法。{MongoError:connection 0 to localhost:27017超时名称:'MongoError',消息:'connection 0 to localhost:27017 timed out'}如果连接失败,
db
将为
null
。在
else
块中移动close命令。显然,连接MongoDB时出现问题。您为什么不记录
err
以查看它是什么?尝试在第一个if语句中添加“console.log(err)”,并向我们显示结果。其他注释说:您的输出显示连接到数据库的错误。当数据库未连接时,您的db对象将为null,因此没有close方法。{MongoError:0到localhost的连接:27017超时名称:'MongoError',消息:'0到localhost的连接:27017超时'}