54

我正在经历我的第一个 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 新手,但我认为这是一条未正确配置的路径?

4

10 回答 10

79

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

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

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

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

要更正此问题,请到cd该文件夹​​并键入npm install mongodb. 完成该过程后,您应该可以使用该node_modules/mongodb文件夹。

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

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

于 2013-01-09T01:26:38.433 回答
63

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

  1. npm install mongodb -g
  2. cd /path/to/my/app/文件夹
  3. npm 链接 mongodb

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

以下是一些参考资料,以备不时之需:

于 2013-05-30T17:55:36.603 回答
8

此问题可能是由以下原因之一引起的。

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

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

解决方案

1) 遍历应用顶层目录并执行npm install mongodb,这将安装 mongodb 模块,您的项目会自动检测它。

或者

2)执行npm install mongodb -g全局安装 mongo DB 模块,然后 Ttaverse 到应用程序顶层目录并使用命令npm link mongodb命令链接。

有用的链接

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

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

于 2015-08-10T06:28:11.443 回答
7

你可以做两件事来让它运行:-

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

执行完其中任一操作后,您将在“module.js”目录下看到 node_modules --> mongodb 文件夹,这意味着 mongodb 已成功安装。

于 2016-09-18T14:29:42.950 回答
4

通过以下步骤全局安装 mongodb:-

a) npm install mongodb -g

b) 进入你的 app 目录,module.js 所在的目录,然后运行

npm 链接 mongodb

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

于 2019-01-19T12:20:29.820 回答
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 安装 mongodb

编辑 package.json = "mongodb": "^3.0.1",更改 "mongodb": "3.0.1",

于 2017-12-28T12:02:44.737 回答
0

我是 MongoDB 的新手。花了几个小时通过 npm 安装 mongodb 后,我终于得到了图片。看,实际上您需要处理三个“mongodb”(我使用的是 OSX):

1、NodeJS中使用的驱动:即:var mongo = require('/usr/local/lib/node_modules/mongodb')。或者,您可以使用前面帖子中提到的“npm 链接”以避免长路径。命令“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下的数据库。

因为你已经通过 npm 安装了 mongodb #1,所以现在你可以在你的 NodeJS 程序中使用它。

任务完成!

于 2015-02-18T04:50:35.727 回答
0

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

1.转到您的项目目录。(cd您的项目路径)

2.在命令shell中运行此命令(安装npm)

3.运行你的项目(例如 node app.js)

于 2015-05-05T10:19:44.827 回答
0

可能是您尝试运行其他项目路径。我遇到了同样的问题,并通过以下几个步骤得到解决。

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

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

于 2015-11-26T07:34:24.907 回答
0

我的问题是,当我最初创建我的 package.json 文件时,我已经使“版本”键对应于“1.0.0”的值。当我将其更改为版本值以反映我想在“依赖项”键下使用的版本时,我摆脱了错误。下面是潜在修复的图片。注意“dependencies”下的“version”和“mongodb”是如何匹配的。 在此处输入图像描述

于 2015-12-22T05:41:29.870 回答