Javascript 错误:无法读取属性';关闭';空的
你好,亲爱的社区,我想知道为什么我在尝试使用mongodb和nodejs时会出现这个错误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.')
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超时'}