express+mongoDB在离线状态下启动,mongodb连接失败,联网状态下正常,有人遇到过这个问题吗?

想学习nodeJS,学着网上的教程使用express+mongoDB做了一个简单的博客系统,偶然间未联网想启动项目,结果报错了,不能正常启动,网络连接正常的时候一切正常,当断开网络,离线状态的时候,启动项目就报MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: getaddrinfo ENOENT localhost:27017]

报错信息:


C:\Users\pan\Documents\workSpace\node_blog\node_modules\_mongodb@2.2.35@mongodb\lib\mongo_client.js:421
          throw err
          ^
MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: getaddrinfo ENOENT localhost:27017]
    at Pool.<anonymous> (C:\Users\pan\Documents\workSpace\node_blog\node_modules\_mongodb-core@2.1.19@mongodb-core\lib\topologies\server.js:336:35)
    at emitOne (events.js:116:13)
    at Pool.emit (events.js:211:7)
    at Connection.<anonymous> (C:\Users\pan\Documents\workSpace\node_blog\node_modules\_mongodb-core@2.1.19@mongodb-core\lib\connection\pool.js:280:12)
    at Object.onceWrapper (events.js:317:30)
    at emitTwo (events.js:126:13)
    at Connection.emit (events.js:214:7)
    at Socket.<anonymous> (C:\Users\pan\Documents\workSpace\node_blog\node_modules\_mongodb-core@2.1.19@mongodb-core\lib\connection\connection.js:189:49)
    at Object.onceWrapper (events.js:315:30)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! blog@0.0.0 start: `node ./bin/www`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the blog@0.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\pan\AppData\Roaming\npm-cache\_logs\2018-03-28T05_43_28_490Z-debug.log

图片描述

mongodb连接信息如下:

module.exports = {
  cookieSecret: 'myblog',
  db: 'blog',
  host: 'localhost'
};
var settings = require('../settings'),
    Db = require('mongodb').Db,
    Connection = require('mongodb').Connection,
    Server = require('mongodb').Server;
module.exports = new Db(settings.db, new Server(settings.host, 27017, {}));

还望大神指点一二

阅读 3k
3 个回答

@enhancer 兄弟的链接是404,我把localhost改成127.0.0.1了,还是报错


问题已经找到:
原来我把连接mongodb的设置:

module.exports = {
  cookieSecret: 'myblog',
  db: 'blog',
  host: 'localhost'
};

中的localhost改了,但是session存储连接的localhost没改:

app.use(session({
    secret: settings.cookieSecret,
    key: settings.db,
    cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
    store: new MongoStore({
      db: settings.db,
      url: 'mongodb://127.0.0.1:27017/blog'
    })
}));

修改后在离线状态可以启动,没问题!


感谢诸位帮忙解决问题,谢啦Thanks♪(・ω・)ノ

把 localhost 换成 127.0.0.1 吧

你可以试试用node ./bin/www启动项目,而不是cnpm start启动项目。
如果可以,请把你的package.json文件贴出来看看

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进