19

我尝试使用 npm 从 /home/iwan/my-project 目录中安装 express 包:

npm install express

express@3.3.7 ../node_modules/express
├── methods@0.0.1
├── cookie-signature@1.0.1
├── range-parser@0.0.4
├── fresh@0.2.0
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── send@0.1.4 (mime@1.2.11)
└── commander@1.2.0 (keypress@0.1.0)

奇怪的是 npm 没有在当前目录(/home/iwan/my-project/node_modules/express)中安装 express 包,而是在 /home/iwan/node_modules/express 中。

我错过了什么?

4

3 回答 3

50

如果当前node_modules目录中不存在该目录,NPM 将在更高的目录中查找它,直到找到为止。因此,如果父目录有一个node_modules目录,NPM 将假定它是安装模块的位置。

解决此问题的一种快速方法是创建一个node_modules您希望放置模块的空目录。

于 2013-09-02T05:17:19.807 回答
2

我相信安装软件包的最佳方法npm是制作一个package.json文件。像这样,只要把它作为你的应用程序放在 smae 目录中。示例package.json文件可能如下所示:

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "3.3.5",
    "jade": "*",
    "less-middleware": "*",
    "ejs": "*",
    "mongoose": "3.6.*"
  }
}

查看依赖项列表。只需添加您想要的模块,例如underscore. 只需将其添加到依赖项字典中。像这样:

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "3.3.5",
    "jade": "*",
    "less-middleware": "*",
    "ejs": "*",
    "mongoose": "3.6.*",
    "underscore": "*"   <-------------- Added
  }
}

然后转到您的目录并运行npm install,然后 bam!将为您安装所有软件包及其依赖项。它将完成所有工作,这意味着node_modules为您制作文件夹。这是我的应用程序目录的样子:

在此处输入图像描述

于 2013-09-02T05:42:03.410 回答
0

您还可以使用https://docs.npmjs.com/files/package.json网页中的指南创建一个空白 package.json 文件。然后将其放在您的项目文件夹中并键入npm install.

于 2015-01-08T02:33:36.513 回答