「求助」初学Nodejs,在搭mongodb的时候报错。

「求助」初学Nodejs,在搭mongodb的时候报错。

已经解决了,目录权限的问题,没有启动成功。

在看nswbmw 的教程 https://github.com/nswbmw/N-blog/wiki/_pages 然后一步步来,才到mongodb配置的时候就出问题,伤心。 刚到这里:https://github.com/nswbmw/N-blog/wiki/第一章–Express-MongoDB搭建多人博客#会话支持 然后报错如下: MANIHOME:blog manihome$ node app Express server listening on port 3000

/Users/manihome/blog/node_modules/connect-mongo/lib/connect-mongo.js:155 throw Error(‘Error connecting to database <’ + err + ‘>’); ^ Error: Error connecting to database <Error: failed to connect to [127.0.0.1:27017]> at Error (<anonymous>) at /Users/manihome/blog/node_modules/connect-mongo/lib/connect-mongo.js:155:17 at /Users/manihome/blog/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:229:16 at null.<anonymous> (/Users/manihome/blog/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/connection/server.js:578:7) at EventEmitter.emit (events.js:106:17) at null.<anonymous> (/Users/manihome/blog/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:139:15) at EventEmitter.emit (events.js:98:17) at Socket.<anonymous> (/Users/manihome/blog/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/connection/connection.js:475:10) at Socket.EventEmitter.emit (events.js:95:17) at net.js:441:14

怎么解决这个问题?


6 回复

根据你提供的信息,错误提示表明你的 Node.js 应用程序在尝试连接 MongoDB 数据库时遇到了问题。错误信息 Error: Error connecting to database <Error: failed to connect to [127.0.0.1:27017]> 表明应用程序试图连接到本地运行的 MongoDB 服务器(默认端口为 27017),但未能成功建立连接。

解决方案

1. 确认 MongoDB 服务已启动

确保 MongoDB 服务正在运行。你可以通过以下命令检查:

  • macOS/Linux:

    mongod --version
    

    如果 MongoDB 没有运行,可以使用以下命令启动它:

    mongod
    
  • Windows: 打开命令提示符并输入:

    mongod
    

2. 配置 MongoDB 连接字符串

如果你的 MongoDB 服务不是在默认端口(27017)上运行,或者不在本地运行,你需要修改连接字符串。例如,如果你的 MongoDB 运行在一个不同的 IP 地址或端口上,你可以这样配置:

const mongoose = require('mongoose');
mongoose.connect('mongodb://<your-mongodb-host>:<port>/<your-database>', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

<your-mongodb-host><port> 替换为你 MongoDB 服务器的实际地址和端口。

3. 示例代码

假设你的 MongoDB 服务运行在本地且使用默认端口,你可以这样配置连接:

// app.js
const express = require('express');
const mongoose = require('mongoose');

const app = express();

// MongoDB 连接配置
mongoose.connect('mongodb://localhost:27017/mydatabase', {
  useNewUrlParser: true,
  useUnifiedTopology: true
})
.then(() => console.log('MongoDB connected...'))
.catch(err => console.log(err));

app.listen(3000, () => {
  console.log('Express server listening on port 3000');
});

总结

  • 确保 MongoDB 服务正在运行。
  • 检查连接字符串是否正确。
  • 使用 useNewUrlParseruseUnifiedTopology 来避免潜在的连接问题。

希望这些步骤能帮助你解决问题!


failed to connect to [127.0.0.1:27017]

你能不能用 mongo 命令连接到 mongodb 数据库?

就像这样:

‘’’ $ mongo MongoDB shell version: 2.4.3 connecting to: test

‘’’

‘’’ 不好使了?

mongo 连不上。

目测你没开mongodb。

根据你提供的内容,错误信息表明在连接 MongoDB 数据库时出现了问题。错误提示 failed to connect to [127.0.0.1:27017] 表明 Node.js 应用尝试连接本地的 MongoDB 服务(默认端口 27017),但未能成功连接。

解决方法:

  1. 确保 MongoDB 服务已启动:你需要确认 MongoDB 是否已经在本地运行。可以使用以下命令检查 MongoDB 服务状态:

    • 在 Windows 上:net start MongoDB
    • 在 macOS 或 Linux 上:sudo service mongod status
  2. 检查 MongoDB 配置文件:确认 MongoDB 配置文件中监听的 IP 和端口是否正确设置为 127.0.0.1:27017

  3. 检查防火墙设置:如果防火墙阻止了 MongoDB 的连接,需要调整防火墙设置以允许连接。

  4. 使用正确的连接字符串:如果你的应用程序使用了连接字符串而不是默认的 127.0.0.1:27017,请确保连接字符串正确无误。例如,使用环境变量或配置文件来管理连接字符串。

示例代码:

假设你的应用使用 mongoose 连接 MongoDB,你可以这样设置连接字符串:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/mydatabase', {
    useNewUrlParser: true,
    useUnifiedTopology: true,
});

最后检查:

  • 确认 MongoDB 数据库名 (mydatabase) 是否存在。
  • 检查是否有任何网络或权限问题导致无法访问数据库。

通过以上步骤,你应该能够解决连接 MongoDB 时遇到的问题。如果仍然有问题,请提供更多详细信息以便进一步诊断。

回到顶部