npm安装不会创建node_modules目录。

89

我正在为MongoDB大学课程做作业。他们给了我们一些文件,指令如下:

运行 npm install mongodb,然后运行node app.js

由于某种原因,npm install没有创建一个node_modules目录,但是我没有看到任何构建错误:

mongo-uni/hw1-2$ npm install mongodb
npm WARN package.json path@0.4.9 path is also the name of a node core module.
npm http GET https://registry.npmjs.org/mongodb
npm http 304 https://registry.npmjs.org/mongodb
npm http GET https://registry.npmjs.org/bson/0.2.5
npm http GET https://registry.npmjs.org/kerberos/0.0.3
npm http 304 https://registry.npmjs.org/kerberos/0.0.3
npm http 304 https://registry.npmjs.org/bson/0.2.5

> kerberos@0.0.3 install /home/jasonshark/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)

make: Entering directory `/home/jasonshark/node_modules/mongodb/node_modules/kerberos/build'
  SOLINK_MODULE(target) Release/obj.target/kerberos.node
  SOLINK_MODULE(target) Release/obj.target/kerberos.node: Finished
  COPY Release/kerberos.node
make: Leaving directory `/home/jasonshark/node_modules/mongodb/node_modules/kerberos/build'

> bson@0.2.5 install /home/jasonshark/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)

make: Entering directory `/home/jasonshark/node_modules/mongodb/node_modules/bson/build'
  CXX(target) Release/obj.target/bson/ext/bson.o
make: Leaving directory `/home/jasonshark/node_modules/mongodb/node_modules/bson/build'
mongodb@1.3.23 ../../../node_modules/mongodb
├── kerberos@0.0.3
└── bson@0.2.5
mongo-uni/hw1-2$ node app.js
Failed to load c++ bson extension, using pure JS version
'No document found'

npm日志来看,似乎正在使用目录/home/jasonshark/node_modules/。你能否尝试一下ls /home/jasonshark/node_modules/ 来查看该路径是否存在?关于“bson扩展”的消息是警告您正在使用性能较差的JS模块(而不是C++模块)。“没有找到文档”的消息来自于你的 app.js,它可能实际上正在运行,但还没有找到任何文档。 - Stennie
我也是通过代理服务器访问互联网的,这可能会影响下载。 - Connor Leech
1
我认为下载模块不是问题:C++ bson 模块可能没有安装,因为您的路径中没有正确设置编译器,但纯 JS 模块对于开发应该没问题。我会查看 app.js 代码以了解它的期望值。我猜测应用程序正在正常运行 :) - Stennie
你解决了吗?我也遇到了同样的问题。我尝试了下面的每个答案,但是没有得到一个node模块文件夹。 - Mel
14个回答

100

npm init

这是你所需要的全部内容。它将为您即时创建package.json文件。


2
在您的项目相同的文件夹中(您想创建node_modules文件夹的位置)。 - Dror Bar
1
谢谢,如果找不到 package.json 文件,npm install 安装到哪里?我想知道是否应该由 npm 显示消息,说明没有找到 package.json 文件,并且应该运行 npm init - Elijah Lynn
1
为了以后的参考,在 Visual Studio 中进行此操作时:我花了比我想象中更长的时间才发现解决方案资源管理器中没有看到 node_modules 文件夹,因为它没有自动包含在项目中。但实际上该文件夹是存在的! - Tom Wuyts
1
和 @TomWuyts 一样... 如果你使用 VS Code,请在文件资源管理器侧边栏悬停时,使用右上角的图标刷新文件资源管理器... 这为我节省了一些时间和精力。 - Lushawn
非常感谢。这帮助我解决了我的问题。 - undefined

47

NPM已在“/home/jasonshark/”路径下创建了一个node_modules目录。

从您的问题来看,似乎您希望在当前目录下创建node_modules

为此,

  1. 创建项目目录:mkdir <project-name>
  2. 切换到该目录:cd <project-name>
  3. 运行命令:npm init。这将在当前路径创建package.json文件。
  4. 打开package.json文件,并填写以下内容:

    {
        "name": "project-name",
        "version": "project-version",
        "dependencies": {
            "mongodb": "*"
        }
    }
    
  5. 现在执行:npm install或者npm update

现在它将在您创建的文件夹"project-name"下创建node_modules目录。


在构建过程中安装目录开关丢失,并且缺少 npm init 以便选择当前目录进行安装。比接受的答案更好地解释了这一点。 - Pranav Singh
2
我在这里要指出的是,使得这个特定的 package.json 生成一个 node_modules 目录的原因是它包含了 dependecies 属性,并且该属性中有一些内容。 - David Kennell

25

如果你有一个package-lock.json文件,你可能需要删除该文件,然后运行npm i。这对我有效。


13

请参考@Cesco的回答:npm init确实是您需要的全部内容


我遇到了同样的问题 - 运行npm install somePackage并未生成node_modules目录。

我在根目录下创建了一个package.json文件,其中包含一个简单的JSON对象:

{
    "name": "please-work"
}

下一次运行npm install时,将生成node_modules目录。


3
在任何人开始谩骂之前,这是一个“特性”,而不是一个错误。 - Qix - MONICA WAS MISTREATED
2
实际上,如果我安装的是顶级包而不是任何其他包使用的包,则我不需要一个package.json文件。在这种情况下,在运行npm install之前,似乎我只需要执行“mkdir node_modules”即可。 - Michael

4

当你运行npm init并开始安装npm包后,第一次安装完成后,它将创建node_moduals文件夹。

例如:

npm init

(让你设置package.json文件)

npm install <package name here> --save-dev

安装包并创建node模块目录


3

cd进入目录,然后运行。

npm install node

1

以下是一些我亲测有效的尝试方法:

  1. 尝试在IDE之外运行npm install,使用bash/PowerShell/cmd提示符等。它将能够正常工作,并且可能会成功完成。

  2. 尝试升级NPM版本:

npm install -g npm

或者,保留特定的主要版本:
npm install -g @latest-7

然后再次运行你的npm install

1
我刚刚修好了!
首先确保你在项目文件夹中,然后运行:
1. npm init
2. npm install --save   
3. Install any module.

这是结果:

enter image description here


0
对我来说,我必须进入 package.json 所在的目录,然后运行 npm install 才能看到 node_modules 文件夹。显然,在没有 package.json 的目录中运行 npm install 不会出错或告诉你其他信息。

0

这篇回答是给像我学生一样将他们的Windows账户名命名为Unicode字符(除a-z外)的用户们的。:) 他们将项目文件夹放在了桌面文件夹上。

请确保您的项目文件夹路径不包含特殊字符,如“ÇŞİ”等。

在我们的情况下,将文件夹移动到C:\即可解决问题。


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