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

时间:2015-09-24 17:23:48

标签: javascript node.js express

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

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

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

2 个答案:

答案 0 :(得分:5)

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

示例:

enter image description here

所以,如果你在yourFile.js

上有这个
var something = require('../../');

您正在参考index.js

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

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

两者与这一个完全相同(.js,在这种情况下是不必要的)

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

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

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

  

如果目录中没有package.json文件,那么   Node.js将尝试加载index.js或index.node文件   那个目录。例如,如果没有package.json文件   上面的例子,然后要求(' ./ some-library')会尝试加载:

     

./ some-library / index.js

     

./一些库/ index.node

答案 1 :(得分:2)

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