【问题标题】:Connection Error (err) - Mongodb connection using nodejs in an expressjs framework连接错误 (err) - 在 expressjs 框架中使用 nodejs 的 Mongodb 连接
【发布时间】:2016-03-21 15:53:24
【问题描述】:

我现在正在学习 nodejs 以及如何使用 nodejs 和 expressjs 作为框架来开发 MVC 应用程序。我有一个 TDD 方法以及与 TDD 测试脚本一起编写的模型和视图类。我有一个 mongodb 测试脚本,但它失败并显示以下错误消息:

expressjs_multech_project mul$ jasmine-node ./tests
.......F

Failures:

  1) MongoDB is there a server running?
   Message:
     Expected {  } to be null.
   Stacktrace:
     Error: Expected {  } to be null.
    at /Users/.../expressjs_multech_project/tests/mongodb.spec.js:6:19
    at /Users/.../expressjs_multech_project/node_modules/mongodb/lib/mongodb/mongo_client.js:334:20
    at /Users/.../expressjs_multech_project/node_modules/mongodb/lib/mongodb/db.js:258:16
    at null.<anonymous> (/Users/.../expressjs_multech_project/node_modules/mongodb/lib/mongodb/connection/server.js:621:7)
    at emitThree (events.js:110:13)
    at emit (events.js:188:7)
    at null.<anonymous> (/Users/.../expressjs_multech_project/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:139:15)
    at emitTwo (events.js:100:13)

Finished in 0.182 seconds
8 tests, 18 assertions, 1 failure, 0 skipped

我使用 Jasmine for node 作为测试包,所有其他测试都通过了,只编写了模型和视图类。我不明白为什么我的 mongodb TDD 脚本在 mongodb 上失败,当我 npm start 时,它没有开始返回 app.js 错误消息:

> node app.js

Sorry, the server (mongodb) is not running

我研究了堆栈跟踪,据我所知,没有与 mongodb 建立连接并且它返回 null。我检查了 mongodb 以确保它在那里:

Johns-MacBook-Pro:expressjs_multech_project mul$ npm list mongodb
multechanalytics@0.0.1 /Users/.../expressjs_multech_project
└── mongodb@1.3.10 

我已经尝试了很多补救措施,但迄今为止没有任何效果。关于解决与服务器的连接问题的任何想法,以便我可以继续这个 expressjs MVC 培训项目?

我的 config/index.js 看起来像这样:

var config = {
    local: {
      mode: 'local',
      port: 3000,
      mongo: {
        host: '127.0.0.1',
        port: 27017
      }
    },
    staging: {
      mode: 'staging',
      port: 4000,
      mongo: {
        host: '127.0.0.1',
        port: 27017
      }
    },
    production: {
      mode: 'production',
      port: 5000,
      mongo: {
        host: '127.0.0.1',
        port: 27017
      }
    }
}
module.exports = function(mode) {
  //export module configuration making it available to all files in folder
  return config[mode || process.argv[2] || 'local'] || config.local;

这是我在扩充package.json 文件和npm install mongodb --save 以在npm install 之后运行安装mongo 时得到的输出

muls-MacBook-Pro:expressjs_multech_project jmulhall$ npm install mongodb --save

> kerberos@0.0.11 install /Users/jmulhall/Documents/Web_Development/Express-Nodejs/expressjs_multech_project/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o

> bson@0.2.22 install /Users/jmulhall/Documents/Web_Development/Express-Nodejs/expressjs_multech_project/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/bson/ext/bson.o
multechanalytics@0.0.1 /Users/jmulhall/Documents/Web_Development/Express-Nodejs/expressjs_multech_project
├─┬ less-middleware@0.1.12
│ └─┬ less@1.4.2
│   └─┬ request@2.69.0
│     └─┬ bl@1.0.3
│       └─┬ readable-stream@2.0.6 
│         └── isarray@1.0.0 
└─┬ mongodb@1.4.40 
  ├─┬ bson@0.2.22 
  │ └── nan@1.8.4 
  ├── kerberos@0.0.11 
  └─┬ readable-stream@2.0.6 
    └── isarray@1.0.0 

谢谢...

【问题讨论】:

  • 嗨 John 从信息中不清楚您是否已验证您的 mongo 服务器已启动。您是在本地运行 mongodb 还是从服务提供商处运行?
  • 嗨 9,它在本地运行在 127.0.0.1:27017
  • 9,我运行了npm start,启动失败,这是我验证mongdb服务器验证的基础。
  • 好的,但是节点库认为 mongo 没有启动并运行。当您运行 'mongo' 安装了 mongodb 的命令行客户端时,您会得到什么?
  • 9,我什么都没有……对于 mongod、mongodb 或任何其他你能想到的带有“mongo”的迭代都没有

标签: node.js mongodb express tdd


【解决方案1】:

这看起来不像是安装错误,因为组件返回exit 0,这很好。

需要说明的是,虽然你安装的包只是官方的mongodb驱动https://www.npmjs.com/package/mongodb - The official MongoDB driver for Node.js. Provides a high-level API on top of mongodb-core that is meant for end users.

您需要安装 mongodb 服务器才能完整安装https://docs.mongodb.org/manual/installation/

【讨论】:

  • 好东西 9 号...我把它修好了.. 但在学习了有关 mongodb 及其安装的负载之后没有。我是 brew 粉丝,但这次 brew 上的附加功能似乎导致了更多糟糕的安装。
  • 我找到了一篇非常清晰的安装博客文章并关注了它,它现在可以在我的本地机器(Mac OSX 10.11.4)上运行。我还在我的 MVC 应用程序上再次运行了 TDD 测试,它通过了所有测试,包括我昨天检查了大约一千次的 mongodb 测试脚本!手动安装的博客/教程的链接是mkyong.com/mongodb/how-to-install-mongodb-on-mac-os-x ...我会说我发现 nano 比 vim 更容易,所以我使用 nano 来更新我的 bash_profile。手动安装很有魅力。感谢您先生的所有帮助和投入...您是男人中的国王!...
猜你喜欢
  • 1970-01-01
  • 2017-06-29
  • 2015-05-31
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
相关资源
最近更新 更多