Node.js错误:错误:找不到模块“mongoose”

41
C:\Users\Nick\Desktop\turntablefm\Bots\Super Bot>node bot.js

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Cannot find module 'mongoose'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (C:\Users\Nick\Desktop\turntablefm\Bots\Super Bot\db.j
s:1:78)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Module.require (module.js:357:17)

我已经使用npm install进行了安装,尝试了重新安装,但没有起作用,有什么想法?


请随意标记答案,如果它对您有帮助的话。祝好! - Jo Dar Gaya Woh Mar Gaya
我使用pip安装了mongoose。但是我仍然遇到同样的问题。有人能指点我正确的方向吗? - aman
20个回答

57

尝试使用以下命令安装mongoose:

npm install mongoose

不要使用-g开关。

顺便说一下:我在管理员模式下运行了命令提示符。参考


5
通常情况下,遵循以下经验法则:如果你想在你的程序中使用安装的东西,使用 require('whatever'),那么请将其安装在本地项目的根目录。如果你想在命令行界面上使用安装的东西,将其全局安装,以便其可执行文件最终出现在 PATH 环境变量中。 - Devs love ZenUML

20

您可以采取以下两种方法之一来运行它:

1)使用以下步骤全局安装mongoose:

a) npm install mongoose -g

b) 转到您的应用程序目录,其中包含bot.js文件,然后运行

npm link mongoose

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

2)另一种方法是通过本地而非全局安装mongoose:

npm install mongoose

按照这两种方法之一后,您将在'bot.js'目录下看到node_modules --> mongoose文件夹,这意味着mongoose已成功安装。

现在,运行 node bot.js , 它将正常工作。


最清晰的解释,我认为它帮助我理解了。+1! - pr0gma

9

使用--save选项进行安装:

npm install mongoose --save

这将把mongoose添加到package.json中,Heroku使用它来构建您的应用程序。

6

你需要在命令行中输入以下指令:

npm install mongoose

记得要在项目根目录下调用此指令。


5
npm install mongoose

如果一切正常,它会起作用,并且您将在终端上看到以下内容。
mongoose@4.4.19 node_modules/mongoose
├── sliced@1.0.1
├── hooks-fixed@1.1.0
├── regexp-clone@0.0.1
├── mpromise@0.5.5
├── muri@1.1.0
├── kareem@1.0.1
├── mpath@0.2.1
├── bson@0.4.23
├── mquery@1.10.0 (sliced@0.0.5, debug@2.2.0, bluebird@2.10.2)
└── mongodb@2.1.18 (readable-stream@1.0.31, es6-promise@3.0.2, mongodb-core@1.3.18)

2

对于Typescript,我需要添加@types/mongoose:yarn add -D @types/mongoose


2

我在我的Mac电脑上遇到了同样的问题,于是在Spotlight中进行了搜索,发现mongoose已经被安装在/usr/local/node_modules目录下(当我运行'npm install mongoose'时)。将mongoose文件夹移动到~(home)node_modules目录下,这是npm实际安装的位置,解决了我的问题。


没错 - 我也是这样。我在我的Windows电脑上通过npm安装到了Users/Name文件夹,遇到了这个错误。当我将node_modules文件夹移到上几个目录之后,问题就解决了。 - mattbryanswan

1
如果您已经全局安装了mongoose(npm install -g mongoose),那么执行以下操作:
% npm link mongoose

在项目目录中。这对我有用。

1

npm install会在当前工作目录中创建"node_modules"。

随着应用程序的增长,所需模块的数量也增加了,更好的方法是维护一个package.json(参考:https://dev59.com/ImYq5IYBdhLWcg3wwDNA#14226133),然后只需发出"npm install"而不是安装每个模块。

当在Heroku等平台上部署应用程序时,您可以忽略(git ignore)项目的巨大node_modules目录。 Heroku通过读取您的package.json来安装依赖模块。

这种方法使我们为每个基于节点的项目创建相同的必需节点模块,但这没关系,因为我们只需要每个项目发出"npm install"命令一次。


1
我曾遇到同样的问题。但是我只是使用了 mongose 而不是 mongoose。这两个包的名称几乎相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接