我无法安装和协同使用这3个软件包。以下是我采取的步骤:
创建了一个小程序来测试并获得以下异常:
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安装或者npm这样做吗?
TIA!
答案 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;