node.js 怎么知道 express.js 位置
How does node.js know express.js location
我的 node.js 服务器如何知道如何找到 express.js 文件?
在我的 server.js 文件中,我需要 express
:
var express = require('express');
var app = express();
我的 server.js 文件在 app
文件夹中,而 express.js 在 app\node_modules\express\lib
文件夹中:
express.js 在 lib
目录中
node.js 是否自动知道在 node_modules
中查找依赖项?任何地方都没有直接枚举路径——我没有在代码中看到它。
这是 a sample project from scotch.io,我正在尝试将其拆解并学习。我是 MEAN 堆栈的新手,我正试图从基础层面理解它。
仅供参考,这是节点 v 4.5.0
评论已经涵盖了主要答案,但我会尝试在此处将其分开,以便对该主题进行更全面的概述(并非包罗万象)。简短的版本是节点在节点的核心(内置)包中查找,然后是项目的 node_modules
模块(包,但我们通常 require
模块)匹配名称的路径。 1
包安装、保存和位置
节点使用npm
安装依赖,可以是"dependency"或"devDependency";后者用于仅正常使用该模块不需要的开发问题。我们使用标志 --save
或 --save-dev
(例如 npm install express --save
)将这些保存到我们项目的 package.json
。 2
package.json
文件位于项目树的根目录(项目的 folder/directory),包含依赖信息以及其他信息。 3 This is defines a "package". When a person publishes a package to npmjs,通过 npm
安装的软件包的(默认)注册表,它们应该包含一个格式正确的 package.json
,其中列出了它自己的依赖项、要包含的文件,以及什么是 "main" 文件开头,是否应该在 require
语句中使用。
您在克隆项目存储库后通过 运行 npm install
安装的依赖项,将安装 package.json
中指定的包到 node_modules
路径中你的项目的根目录(你应该从那里 运行 安装命令)。
边注
检查您引用的文章列出的 the GitHub repo 后,您似乎已经在 app/
目录中创建了每个文件。
需要
node中的require
语句的使用是CommonJS and for node, looks first (after core packages) in the node_modules/
path or, if you specify a relative path to a folder or file, you can get it directly. Path relative means that it starts with ./
for a prefix to the current working directory (that the file is executing from), ../
for the directory above the current one, etc. There are other ways of handling paths, such as as the path
module that is built into node 4的风格。例如,以下是有效的:
require('./some-other.js')
要求在该文件的 module.exports
中,来自 some-other.js
文件 5,在当前的相对路径中
require('./some.json')
将从 .json
文件 6 中引入 JSON 格式的内容,在当前的相对路径 中
require('./routes')
will/can 也从 routes/
路径(目录)导入导出的内容,默认情况下从目录的 index.js
开始,如果它存在 7
最后一种方法是一种很好的方法,可以引入更复杂的需求,而无需将所有内容都放在一个过于繁忙的文件中。
让我们考虑一下可能的模块来源:
- 核心模块由Node.js提供。
- 打包模块 做
npm install
。这些模块存储在通常位于项目根目录中的 node_modules
文件夹中。
- 项目中任何其他位置的模块(通常是您创建的模块)
如果您需要没有任何前缀的模块,例如 require('a_module')
,则首先搜索 核心模块,如果未找到, 接下来搜索 包模块 。 See the Node.js docs here
如果您需要前缀为 /
或 ./
的模块,例如 require('/another_module')
, require(./another_module)
,another_module
被认为是相对于要求的位置文件。这就是您在任何其他位置.
需要 模块的方式
勾选 Node.js modules docs 进一步阅读。
我的 node.js 服务器如何知道如何找到 express.js 文件?
在我的 server.js 文件中,我需要 express
:
var express = require('express');
var app = express();
我的 server.js 文件在 app
文件夹中,而 express.js 在 app\node_modules\express\lib
文件夹中:
express.js 在 lib
目录中
node.js 是否自动知道在 node_modules
中查找依赖项?任何地方都没有直接枚举路径——我没有在代码中看到它。
这是 a sample project from scotch.io,我正在尝试将其拆解并学习。我是 MEAN 堆栈的新手,我正试图从基础层面理解它。
仅供参考,这是节点 v 4.5.0
评论已经涵盖了主要答案,但我会尝试在此处将其分开,以便对该主题进行更全面的概述(并非包罗万象)。简短的版本是节点在节点的核心(内置)包中查找,然后是项目的 node_modules
模块(包,但我们通常 require
模块)匹配名称的路径。 1
包安装、保存和位置
节点使用npm
安装依赖,可以是"dependency"或"devDependency";后者用于仅正常使用该模块不需要的开发问题。我们使用标志 --save
或 --save-dev
(例如 npm install express --save
)将这些保存到我们项目的 package.json
。 2
package.json
文件位于项目树的根目录(项目的 folder/directory),包含依赖信息以及其他信息。 3 This is defines a "package". When a person publishes a package to npmjs,通过 npm
安装的软件包的(默认)注册表,它们应该包含一个格式正确的 package.json
,其中列出了它自己的依赖项、要包含的文件,以及什么是 "main" 文件开头,是否应该在 require
语句中使用。
您在克隆项目存储库后通过 运行 npm install
安装的依赖项,将安装 package.json
中指定的包到 node_modules
路径中你的项目的根目录(你应该从那里 运行 安装命令)。
检查您引用的文章列出的 the GitHub repo 后,您似乎已经在 app/
目录中创建了每个文件。
需要
node中的require
语句的使用是CommonJS and for node, looks first (after core packages) in the node_modules/
path or, if you specify a relative path to a folder or file, you can get it directly. Path relative means that it starts with ./
for a prefix to the current working directory (that the file is executing from), ../
for the directory above the current one, etc. There are other ways of handling paths, such as as the path
module that is built into node 4的风格。例如,以下是有效的:
require('./some-other.js')
要求在该文件的module.exports
中,来自some-other.js
文件 5,在当前的相对路径中require('./some.json')
将从.json
文件 6 中引入 JSON 格式的内容,在当前的相对路径 中
require('./routes')
will/can 也从routes/
路径(目录)导入导出的内容,默认情况下从目录的index.js
开始,如果它存在 7
最后一种方法是一种很好的方法,可以引入更复杂的需求,而无需将所有内容都放在一个过于繁忙的文件中。
让我们考虑一下可能的模块来源:
- 核心模块由Node.js提供。
- 打包模块 做
npm install
。这些模块存储在通常位于项目根目录中的node_modules
文件夹中。 - 项目中任何其他位置的模块(通常是您创建的模块)
如果您需要没有任何前缀的模块,例如 require('a_module')
,则首先搜索 核心模块,如果未找到, 接下来搜索 包模块 。 See the Node.js docs here
如果您需要前缀为 /
或 ./
的模块,例如 require('/another_module')
, require(./another_module)
,another_module
被认为是相对于要求的位置文件。这就是您在任何其他位置.
勾选 Node.js modules docs 进一步阅读。