【问题标题】:node.js, mongoose and mongodb a pain to install :(node.js、mongoose 和 mongodb 很难安装 :(
【发布时间】:2012-01-09 07:44:57
【问题描述】:

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

  1. 根据此处的 Linux 说明安装了 nodejs 0.6.3(我从站点下载了 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)
    

bson.js 为我出现在这个目录下:/opt/node/node_modules/mongodb/lib/mongodb/bson

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

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

知道我可能做错了什么吗?澄清一下,我需要构建我下载的每个 npm install 还是 npm 会这样做?

TIA!

【问题讨论】:

    标签: mongodb node.js mongoose


    【解决方案1】:

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

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

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

    您可以根据需要按照该模式添加其他依赖项。

    然后从该目录运行“npm install”。它将为您的应用安装所有依赖项。从那里你的应用程序应该运行良好。

    【讨论】:

    • 谢谢...我尝试了你的建议,但根据我使用的版本得到这个:npm ERR!无法读取依赖项。 npm 错误!错误:“版本”字段缺少 npm ERR! 'version' 必须是 X.Y.Z,带有可选的尾随标签。 npm 错误!请参阅npm help json npm ERR 中有关“版本”的部分!在 /usr/local/lib/node_modules/npm/lib/utils/read-json.js:335:13
    • @occasl 请阅读 package.json 上的标准。有些字段是强制性的。
    【解决方案2】:

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

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

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

    现在您可以通过以下方式连接

    mongoose.connect("url");
    

    当尝试检索ObjectID 函数时,您不应依赖mongodb,而应依赖mongoose via:

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

    请阅读Mongoose documentation

    【讨论】:

    • 我在这里得到了样本:webdribble.blogspot.com/2010/07/… 来自 7/2010。我真的在寻找一个使用节点将 ExtJS 连接到 MongoDB 的简单示例。
    • 我继续在我的 Mac 上安装了它,没有任何问题......它现在按预期工作。
    猜你喜欢
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2012-08-26
    • 1970-01-01
    相关资源
    最近更新 更多