为什么 NodeJS 要求我使用下载模块的完整目录?

Why does NodeJS require me to use the full directory for downloaded modules?

例如 Express 之类的东西,默认情况下 Node 不附带。我必须使用 var express = require('C:/Users/User/node_modules/express'); 而不是 var express = require('express');。我注意到默认情况下的模块(例如 http)与我安装的模块不在同一位置。那么我需要做什么才能不必写整个目录。如果有任何不同,我将所有 Node 项目都保留在 C:/Node/ 中,而不是默认项目。

发生这种情况是因为您可能没有在本地安装节点模块。为此,您需要一个 package.json 文件,您可以通过 运行

获取该文件

npm init

这会问你一些关于你的项目的问题,并会在本地设置节点。将创建一个 package.json 文件,它应该看起来像这样(没有依赖项)。

{
  "name": "express-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "Link to your repository"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "bcrypt": "^1.0.2",
    "body-parser": "^1.17.2",
    "chalk": "^2.0.1",
    "compression": "^1.7.0",
    "cookie-parser": "^1.4.3",
    "cors": "^2.8.4",
    "express": "^4.15.3",
    "glob": "^7.1.2",
    "moment": "^2.18.1",
    "mongoose": "^4.11.3",
    "morgan": "^1.8.2",
    "passport": "^0.3.2",
    "path": "^0.12.7",
    "yargs": "^8.0.2"
  }
}

然后您可以通过将它们放在依赖项中来添加所需的节点模块,运行

npm install

如果你想从公共行添加节点模块,你可以使用

npm install package-name --save