node.js如何知道express.js的位置

时间:2016-10-11 16:22:17

标签: javascript node.js express mean-stack requirements

我的node.js服务器如何知道如何查找express.js文件?

在我的server.js文件中,我需要express

var express        = require('express');
var app            = express();

我的server.js文件位于app文件夹中,而express.js位于app\node_modules\express\lib文件夹中:

Server.js File

express.js位于lib目录

Express.js File

node.js是否自动知道在node_modules中查找依赖项?在任何地方都没有直接枚举路径 - 我在代码中没有看到它。

这是a sample project from scotch.io,我试图将它分开并学习。我是MEAN堆栈的新手,我试图在基本层面上理解这一点。

仅供参考,这是节点v 4.5.0

2 个答案:

答案 0 :(得分:1)

评论已经涵盖了主要答案,但我会尝试在此处对其进行分析,以便对该主题进行更全面的概述(并非包罗万象)。简短版本是节点在节点的核心(内置)包中查找,然后是项目的node_modules模块路径(包,但我们通常require模块)匹配名称。 1

包安装,保存和位置

Node使用npm来安装依赖项,这些依赖项可以是"依赖项"或" devDependency&#34 ;;后者用于仅仅正常使用模块所不需要的开发问题。我们使用标记package.json--save(例如--save-dev)将这些内容保存到我们的项目npm install express --save中。 2

package.json文件位于项目树的根目录(项目的文件夹/目录),并包含依赖项信息以及其他信息。 3这是一个"包"。当一个人向npmjs发布包时,要通过npm安装包的(默认)注册表,它们应该包括一个格式良好的package.json,它列出了自己的依赖项,要包含的文件,什么是"主要"如果要在require语句中使用,则以文件开头。

在克隆项目存储库后运行npm install时安装的依赖项,会将package.json中指定的软件包安装到根目录中的node_modules路径中你的项目(你应该从哪里运行安装命令)。

边注

检查您引用的文章列出的the GitHub repo后,您似乎已在app/目录中创建了每个文件。

需要-ING

在节点中使用require语句的格式为CommonJS,对于节点,在node_modules/路径中首先查看(在核心包之后),或者,如果指定文件夹或文件的相对路径,您可以直接获取它。路径相对意味着它以./开头,表示当前工作目录(文件正在执行)的前缀,../表示当前目录上方的目录,等等。还有其他处理方法路径,例如构建到节点4中的path模块。例如,以下内容有效:

  • require('./some-other.js')要求该文件的module.exports来自some-other.js文件5,位于当前的相对路径中
  • require('./some.json')将以.json文件6引入当前相对路径中的JSON格式内容
  • require('./routes')将/也可以从routes/路径(目录)引入导出的内容,默认情况下会从目录index.js开始,如果它存在{ {3}}

最后一种方法是一种很好的方式,可以引入更复杂的需求,而不会将所有内容都保存在一个过于繁忙的文件中。

答案 1 :(得分:0)

让我们考虑模块的可能来源:

  • 核心模块由Node.js。
  • 提供 执行npm install
  • 打包模块。这些模块存储在node_modules文件夹中,该文件夹通常位于项目的根目录中。
  • 项目中任何其他位置的模块(通常由您创建的模块)

如果您需要没有任何前缀的模块,例如require('a_module'),则首先搜索 核心模块 ,如果找不到,则包模块<接下来搜索/ em>。 See the Node.js docs here

如果您需要前缀为/./的模块,例如require('/another_module')require(./another_module),则another_module被视为相对于需求文件的位置。这就是您在任何其他位置需要模块的方式

检查Node.js modules docs以便进一步阅读。