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

我克隆了Express.js回购包含具有Express.js不同用例的示例文件夹。 我打开了Hello World示例,代码从下面一行开始

var express = require('../../'); 

我了解该文件中的其余代码,但是上面的代码已经过去了。 我知道require函数是用来在你的项目中包含一个JS模块,并且应该将模块名称作为parameter passing给require()函数,但是在上面的语句的情况下,我们传入一个目录,它是什么将要做?

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

例:

在这里输入图像描述

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

 var something = require('../../'); 

你正在引用你的index.js

如果你这样做,完全一样:

 var something = require('../../index'); 

和这两者完全一样(使用.js ,在这种情况下是不必要的)

 var something = require('../../index.js'); 

发生这种情况是因为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

如果没有给出文件名,它将加载index.js