无法在简单节点.js应用程序中找到模块 mongodb
Unable to find module mongodb in simple node.js app
TL;DR:以下是我为达到错误而遵循的步骤的详细说明。要查找基本问题,请跳到最底部。
我正在关注这本书 addyosmani - 用于创建一个简单的骨干.js应用程序的骨干基础知识,以节点服务器和 mongodb 作为后端。
按照指示,我已经从 www.mongodb.org 安装了最新版本的 Node.js fromnodejs.org 和 mongodb,并按照说明运行了 mongodb。
现在,根据教程,我创建了以下内容:
{ //package.json
"name": "backbone-library",
"version": "0.0.1",
"description": "A simple library application using Backbone",
"dependencies": {
"express": "~3.1.0",
"path": "~0.4.9",
"mongoose": "~3.5.5"
}
}
在我的项目根目录下执行了npm install
,由于某种原因它没有成功。
我进一步冒险并安装了快递,遵循以下步骤:
npm init
npm install express --save
npm install express
这创建了以下 package.json,我相信它与教程中提到的基本相同:
{
"name": "Backbone-Library",
"version": "0.0.1",
"description": "A simple library application using Backbone",
"main": "index.html",
"dependencies": {
"express": "^3.18.3",
"mongoose": "^3.5.16",
"path": "^0.4.9"
},
"devDependencies": {},
"scripts": {
"test": "echo '"Error: no test specified'" && exit 1"
},
"author": "",
"license": "ISC"
}
这创建了与教程中提到的完全相同的文件夹结构:
node_modules
|_ .bin
|_ express
|_ mongoose
|_ path
然后我成功地执行了npm install
,没有任何错误。
现在,一旦我创建了一个简单的server.js
文件并尝试使用命令执行它node server.js
我就会收到以下错误:
module.js:340
throw err;
^
Error: Cannot find module 'mongodb'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (D:'<-- path to project ->'Backbone-Library'node_modules'mongoose'lib'utils.js:5:16)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
(如果需要,我可以提供完整的跟踪)。
我发现了这些关于相同错误的 StackOverflow 帖子,答案说我必须使用 npm
再次安装 mongodb。
我很困惑,因为这本书没有提到关于这一步的任何内容。
我对我在这里提到的所有内容都很陌生,除了骨干 - node.js
,npm
,mongodb
等,所以我可能缺少一些基本概念。
我想知道是否可以使用我以前安装的现有数据库,而不是通过 npm
再次下载和安装它。
如果没有,为什么需要使用npm
再次安装它,原始安装和npm
安装有什么区别..?
原始安装将数据库本身安装在您的计算机上。npm 安装安装包节点.js需要与 mongodb 通信。NPM 就像 .NET 的 NuGet。您有一个数据库,但仍必须安装包以使框架与数据库本身通信
下面是如何使用 mongodb 模块连接到节点中的 mongo 实例的示例.js
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/course', function(err, db) {
if(err) throw err;
var query = { 'grade' : 100 };
db.collection('grades').find(query).toArray(function(err, docs) {
if(err) throw err;
console.dir(docs);
db.close();
});
});
MongoDB是一个数据库软件;类似于MySQL是一个软件。通常,您与数据库层的交互由某种抽象库管理 - 在这种情况下,节点模块mongoose
。
听起来你有require('mongodb')
,而你应该有require('mongoose')
。这将引入Mongoose
模块,该模块本质上是一个用于与MongoDB
数据库交互的代码库。
听起来您对术语有点困惑。如果您有任何问题,请随时与我联系:)
- Javascript,访问一个主要对象模块模式中的每个对象
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 尽管链接成功并已成功下载,但未找到NPM模块
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 从模块内部访问Express装载路径
- 如何缩短MongoDB ObjectId并在Mongoose模式中使用它
- 如何处理node.js节点mongodb中的连接和查询队列
- RequireJS向模块传递配置总是返回undefined
- MongoDb和模块mongoDB之间的区别
- MongoDB - 错误:找不到模块“./build/Release/bson”
- 节点.js MongoDB驱动程序文档中的断言模块
- 无法在简单节点.js应用程序中找到模块 mongodb
- 节点js mongodb模块嵌入文档
- 如何将数据从mongodb(使用mongodb模块)传递到nodejs视图(使用临时引擎jade)
- 我如何保证节点's mongodb模块游标和/或集合'toArray()使用Bluebird
- 如何正确地重用连接到Mongodb跨NodeJs应用程序和模块
- 如何加载谷歌地图's标记位置使用节点模块和mongodb
- 更好的模块化方式nodejs express mongodb应用程序
- 正在导出mongodb'db'到另一个node.js模块