【问题标题】:node.js cannot find module 'mongodb'node.js 找不到模块“mongodb”
【发布时间】:2012-12-22 23:31:39
【问题描述】:

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

【问题讨论】:

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

标签: node.js mongodb


【解决方案1】:

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

a) npm install mongodb -g

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

npm 链接 mongodb

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

【讨论】:

    【解决方案2】:

    错误

    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",

    【讨论】:

      【解决方案3】:

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

      1) 全局安装 mongodb,步骤如下:-

      a)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已经安装成功了。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

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

          【讨论】:

            【解决方案6】:

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

            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

            【讨论】:

              【解决方案7】:

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

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

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

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

              【讨论】:

                【解决方案8】:

                我是 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 程序中使用它。

                任务完成!

                【讨论】:

                  【解决方案9】:

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

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

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

                  这里有一些参考资料,以备不时之需:

                  【讨论】:

                  • 这才是真正的答案。
                  • 这对我有用,我没有/想要一个 npm 项目。我在命令行中使用节点。
                  【解决方案10】:

                  您收到的错误表明未正确安装 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 并有效地“拉入”所有依赖项。这极大地简化了部署过程和保持依赖关系的过程。

                  【讨论】:

                  • 谢谢,错误是没有在 node_modules 文件夹中安装 mongodb。
                  • 值得一提的是,如果您在全球范围内安装它,您必须使用以下方式链接它:npm link mongodb
                  • 嗯,是的,这非常值得一提。谢谢切斯特,你解决了我的问题!
                  猜你喜欢
                  • 2011-07-14
                  • 1970-01-01
                  • 2013-08-10
                  • 2019-05-12
                  • 2012-01-02
                  • 2017-02-18
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多