我正在浏览我的第一个node.js项目。我已安装mongodb,有一个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:362:17)
at require (module.js:378:17)
我很确定我安装了mongodb,我是来自C#windows后台的unix新手,但我认为这是一条未正确配置的路径?
答案 0 :(得分:62)
您收到的错误表明未正确安装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 update
或npm install
,并有效地“拉入”所有依赖项。这极大地简化了部署过程以及使您的依赖项保持在线的过程。
答案 1 :(得分:51)
尝试一段时间后安装它没有成功(因为我是mongo和node的新手),我确实错过了npm链接步骤。总而言之,我这样做了:
有了这个,我可以在我的应用程序文件中执行此操作:require('mongodb')。
以下是一些参考资料,如果您需要它们:
答案 2 :(得分:7)
这个问题可能是由以下原因之一引起的。
1)您尚未安装mongodb模块。
2)您已在全局上下文中安装了mongodb但未链接到当前应用程序。
<强>解决方案强>
1)遍历应用程序顶级目录并执行 npm install mongodb ,这将安装mongodb模块,您的项目将自动检测它。
或强>
2)执行 npm install mongodb -g 以全局安装mongo DB模块,然后使用命令 npm link mongodb 命令Ttaverse到应用程序顶层目录和链接。
有用的链接
http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/
答案 3 :(得分:5)
你可以做以下两件事之一来让它运行: -
1)全局安装mongodb ,步骤如下: -
一)npm install mongodb -g
b)转到你的app目录,其中module.js所在的位置,然后运行
npm link mongodb
说明: - 当您通过npm全局安装软件包时,它将下载到全局node_module文件夹。对我来说(Mac用户),它位于 / usr / local / lib / node_modules / mongodb 下。我们将此链接到您尝试运行module.js的目录。
2)另一种方法是在本地安装mongodb,而不是全局安装
npm install mongodb
遵循其中任何一个后,您将看到node_modules - &gt; 'module.js'目录下的mongodb文件夹,表示mongodb已成功安装。
答案 4 :(得分:3)
通过以下步骤全局安装mongodb:-
a)npm安装mongodb -g
b)转到模块.js所在的应用目录,然后运行
npm链接mongodb
说明:-当您通过npm全局安装软件包时,它将下载到全局node_module文件夹中。对于我(Mac用户),它在/ usr / local / lib / node_modules / mongodb下。我们将此链接到您尝试运行module.js的目录。
答案 5 :(得分:1)
错误强>
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 install mongodb
编辑package.json =&#34; mongodb&#34;:&#34; ^ 3.0.1&#34;,更改&#34; mongodb&#34;:&#34; 3.0.1&#34;,
答案 6 :(得分:0)
我是MongoDB的新手。在通过npm安装mongodb几个小时后,我终于得到了照片。看,实际上有三个&#34; mongodb&#34;你需要处理(我使用的是OSX):
1。 NodeJS中使用的驱动程序: 即:var mongo = require(&#39; / usr / local / lib / node_modules / mongodb&#39;)。或者,您可以使用&#34; npm link&#34;正如早先的帖子所提到的,以避免漫长的道路。命令&#34; npm install -g mongodb&#34;在/ usr / local / lib下安装mongodb驱动程序(这是&#34; -g&#34;的意思)。这家伙花了几个小时安装,不知道为什么,所以请耐心等待!
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下创建和启动数据库。
因为你有npm安装的mongodb#1所以现在你可以在你的NodeJS程序中要求它。
完成工作!
答案 7 :(得分:0)
我遇到了同样的问题,我按照这些步骤解决了问题。
1.转到您的项目目录(cd项目路径)
2.在命令shell中运行此命令(安装npm)
3.运行您的项目(例如节点app.js)
答案 8 :(得分:0)
可能是您正在尝试运行其他项目路径。我遇到了同样的问题,并通过以下几个步骤得到解决。
1。)使用命令shell &#34; cd / project path&#34;转到项目目录。
2。)现在运行你的项目。
答案 9 :(得分:0)
我的问题是,当我最初创建我的package.json文件时,我已经创建了&#34;版本&#34; key对应于&#34; 1.0.0&#34;的值。当我将其更改为版本值以反映我想要在我的&#34;依赖关系&#34;关键,我摆脱了错误。下面是潜在修复的图片。注意&#34;版本&#34;和&#34; mongodb&#34;在&#34;依赖&#34;比赛。
答案 10 :(得分:0)
我遇到了同样的问题,但是在终端(npm install mongodb
)中重新安装mongodb修复了该错误。另外,在重新安装之前,mongodb最初不在package.json
中的依赖项列表中,因此似乎也需要在其中添加它。