node.js,mongoose和mongodb安装很痛:(

时间:2011-11-30 00:41:56

标签: mongodb node.js mongoose

我无法安装和协同使用这3个软件包。以下是我采取的步骤:

  1. 安装nodejs 0.6.3基于Linux的说明(我从网站下载了tar球而不是在git中使用发行版):https://github.com/joyent/node/wiki/Installation
  2. 使用此处的在线安装安装npm:http://npmjs.org/
  3. 为mongodb,mongojs和mongoose安装了npm包。所有似乎都按预期安装。
  4. 创建了一个小程序来测试并获得以下异常:

    Error: Cannot find module 'mongodb/bson'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (/local/mnt/apps/node-v0.6.3/app.js:6:16)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)
    
  5. bson.js出现在我的目录下:/ opt / node / node_modules / mongodb / lib / mongodb / bson

    我已经尝试调整这行代码来匹配,但仍然没有成功:

    var mongoose = require('mongoose').Mongoose,
    ObjectID = require('mongodb/bson').ObjectID;
    

    知道我可能做错了什么吗?只是为了澄清一下,我是否需要构建我下载的每个npm安装或者npm这样做吗?

    TIA!

2 个答案:

答案 0 :(得分:8)

您可能在项目的错误目录中安装了mongodb。避免这些问题的一个好方法是使用package.json文件。

为您的节点项目创建一个目录,并将.js文件移入其中。添加一个名为package.json的文件,其中包含以下内容:

{  
   "name": "application-name",
   "private": true,
   "dependencies": {
      "mongodb": ">=0.9.6-7",
      "mongoose": ">=0.0.1"
    }
}

您可以按照模式添加其他依赖项。

然后从该目录中运行“npm install&#39;”。它将为您的应用安装所有依赖项。从那里你的应用程序应该运行正常。

答案 1 :(得分:4)

mongodb\bson不是模块,你从哪里得到这个例子?

在node.js中正常使用mongo是通过以下方式实现的:

var mongoose = require('mongoose');
var mongodb = require('mongodb');

现在您可以通过

连接
mongoose.connect("url");

尝试检索ObjectID功能时,您不应该依赖mongodb,而应依赖mongoose通过:

var schema = mongoose.Schema,
    objectId = schema.ObjectId;

请阅读Mongoose documentation