2013-01-09 240 views
31

我正在浏览我的第一个node.js项目。我已经安装了MongoDB中,有一个server.js文件,当我尝试运行它,我得到这个错误node.js找不到模块'mongodb'

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:362:17) 
    at require (module.js:378:17) 

我敢肯定我已经安装的MongoDB,我是新来的UNIX从C#窗口来临背景,但我认为这是一个没有正确配置的路径?

+2

在项目目录的根目录中是否有'package.json'?它是否将'mongodb'列为依赖项?你记得'npm install'吗?该错误表示节点无法找到'mongodb'JavaScript包,而不是机器上的mongodb服务器。 –

回答

54

您正在收到的错误表明MongoDB的NPM软件包未正确安装。

此处的修复取决于您计划如何利用NPM。 NPM包管理器有两种不同的操作模式:本地和全局。

第一个(和默认)模式是“本地”。

如果转到server.js的文件夹,您将看到一个名为node_modules的子文件夹。在该文件夹下将是一个mongodb文件夹。如果该文件夹不存在,则mongodb模块未安装在该路径上。

要更正此问题,请将cd复制到该文件夹​​并输入npm install mongodb。过程完成后,您应该有node_modules/mongodb文件夹可用。

您还可以使用npm install -g mongodb来全局安装MongoDB软件包。如果您正在使用大量的node.js命令行工具,那么这很有用,但如果您部署整个工具则用处不大。

旁注:周围有package.json一个不断发展的标准。 package.json是包含给定模块的所有依赖关系的标准方式。这允许您在项目/包的根目录下运行npm updatenpm install,并有效地“引入”所有依赖关系。这极大地简化了部署过程和保持依赖关系的过程。

+0

谢谢,错误是没有在node_modules文件夹中安装mongodb。 – Eddie

+35

值得一提的是,如果你在全球安装它,你必须使用链接:'npm link mongodb' – meeDamian

+3

呃这是*非常*值得一提。谢谢切斯特,你解决了我的问题! – Locohost

50

尝试了一段时间后没有成功安装(因为我是mongo和node新手),我确实错过了npm链接步骤。所以只是总结一下,我这样做:

  1. NPM安装MongoDB的-g
  2. CD /路径/要/我的/应用程序/文件夹
  3. NPM链接MongoDB的

有了到位,我可以在我的应用程序文件中执行此操作:require('mongodb')。

这里有一些参考,如果你需要他们:

+2

这也适用于我。 +1 –

+2

这是真正的答案。 – richb01

0

我是新来的MongoDB。花了几个小时通过NPM安装mongodb后,我终于得到了图片。见,其实有三大 “的MongoDB” 你需要处理(我使用OSX):

1. 中使用的NodeJS司机: 即:VAR蒙戈=需要('在/ usr/local/lib目录/ node_modules/mongodb的')。或者,您可以使用前面的帖子中提到的“npm link”,以避免漫长的路径。命令“npm install -g mongodb”在/ usr/local/lib下安装mongodb驱动程序(这就是“-g”的意思)。这家伙花了几个小时来安装,不知道为什么,所以要耐心等待!

2. mongodb实用程序(即UNIX可执行命令)。你从http://www.mongodb.org/downloads下载它们。它包含允许您启动mongodb数据库的mongod命令。因此,在我的/ usr/local/bin中,我创建了一个符号链接mongod,指向/usr/local/lib/node_modules/mongodb-osx-x86_64-2.6.7/bin/mongod,因此我可以从任何位置执行mongod 。

3. /data/db指向的mongodb数据库。所以在/ data下,我创建了一个符号链接db,指向/ Users/your_user_id/Database/mongodb(或者任何你喜欢放置它的地方),其中mongodb是一个可以通过mkdir创建的空目录。

因为你已经安装了上面的#2 mongodb,所以你可以在命令行执行mongod,它将在mongodb#3下创建和启动数据库。

因为您有nom安装的mongodb#1,所以现在您可以在您的NodeJS程序中要求它。

工作完成!

0

我得到了同样的问题,我解决了这些步骤。

1.Go到项目迪尔(CD你的项目路径)

2.Run在命令行shell命令(安装NPM)

3.Run您的项目(节点app.js例如)

4

这个问题可能是由下列原因之一造成的。

1)您还没有安装mongodb模块。

2)您已经在全局环境中安装了mongodb,但未链接到当前应用程序。

解决方案

1)运行到顶部的应用程序目录,然后执行NPM安装MongoDB的,这将安装MongoDB的模块,和你的项目会自动检测到它。

2)执行NPM安装mongodb的-g使用命令NPM链路的mongodb全局命令,然后安装蒙戈DB模块Ttaverse到应用顶层目录和链接。

有用的链接

http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/

https://npmjs.org/doc/link.html

0

可能是你正在尝试运行path.I都面临着同样的问题,得到了遵循如下几个步骤解决其他然后项目。

1.)使用命令shell “cd/project path”转到您的项目目录。

2.)现在运行您的项目。

0

我的问题是,当我最初创建我的package.json文件时,我使“版本”键对应的值为“1.0.0”。当我将其更改为版本值以反映我想在我的“依赖关系”键下使用的版本时,我摆脱了错误。下面是潜在修复的图片。注意“dependencies”下的“version”和“mongodb”是如何匹配的。通过下面的步骤

1)安装MongoDB的全球: - - : enter image description here

3

你可以做任何的两件事情,使其运行

一)npm install mongodb -g

B)去您的应用程序目录,其中module.js位于,然后运行

npm link mongodb

说明: - 当您通过npm全局安装软件包时,它会下载到全局node_module文件夹。对于我(Mac用户),它位于/usr/local/lib/node_modules/mongodb。我们将其链接到您尝试运行module.js的目录。

2)另一种方法是在本地安装的MongoDB,不通过

npm install mongodb

全球下列任一后,您将看到node_modules - 下“module.js> MongoDB的文件夹'目录,这意味着mongodb已成功安装。

0

错误

jamsheed-h110m-s2ph:~/project/jamsheed/meanStack/mean$ node server.js 
module.js:538 
    throw err; 
    ^
Error: Cannot find module 'mongodb' 
    at Function.Module._resolveFilename (module.js:536:15) 
    at Function.Module._load (module.js:466:25) 
    at Module.require (module.js:579:17) 
    at require (internal/module.js:11:18) 
    at Object.<anonymous> (/home/haseeb/project/jamsheed/meanStack/mean/server.js:3:13) 
    at Module._compile (module.js:635:30) 
    at Object.Module._extensions..js (module.js:646:10) 
    at Module.load (module.js:554:32) 
    at tryModuleLoad (module.js:497:12) 
    at Function.Module._load (module.js:489:3) 

解决

NPM安装MongoDB的

编辑的package.json = “MongoDB的”: “^ 3.0.1”,改变 “的MongoDB” :“3.0.1”,