如果我们将目录位置传递给Node.js require函数会发生什么?

seg*_*ter 4 javascript node.js express

我已经克隆了Express.js repo,其中包含一个具有Express.js不同用例的Examples文件夹.我打开了Hello World示例,代码以以下行开头

var express = require('../../');
Run Code Online (Sandbox Code Playgroud)

我理解该文件中的其余代码,但上面的行是我的头脑?我知道require函数用于在项目中包含一个JS模块,一个应该将模块名称作为参数传递给require()函数,但在上述语句的情况下,我们传入一个目录,它将要做什么?

Gep*_*ser 5

您正在传递一个index.js位于当前文件后面的两个文件夹的文件.

例:

在此输入图像描述

所以,如果你有这个 yourFile.js

var something = require('../../');
Run Code Online (Sandbox Code Playgroud)

你正在参考你的index.js.

如果您执行以下操作,则完全相同:

var something = require('../../index');
Run Code Online (Sandbox Code Playgroud)

并且两者与这一个完全相同(.js在这种情况下不需要)

var something = require('../../index.js');
Run Code Online (Sandbox Code Playgroud)

index.js是因为是默认名称.

您可以在nodejs.org上阅读更多内容,但重要的部分在这里引用:

如果目录中没有package.json文件,则Node.js将尝试从该目录中加载index.js或index.node文件.例如,如果上面的示例中没有package.json文件,则require('./ some-library')会尝试加载:

./some-library/index.js

./some-library/index.node