NodeJS中的文件模块与文件夹模块

时间:2016-09-05 12:13:10

标签: node.js

让我们说,我有一个entry.js文件entry.js

var t = require('./test'); //it can be file or folder module

如果我在与entry.js相同的包中有一个名为“test”的文件夹和文件,那么执行将如何发生,因为它们具有相同的名称?哪个模块具有最高优先级?

3 个答案:

答案 0 :(得分:2)

检查优先级将是下一个:

  1. ./ test.js
  2. ./ test.json
  3. ./ test.node
  4. ./测试/ index.js
  5. ./测试/ index.node
  6. 来源:

    https://nodejs.org/api/modules.html#modules_file_modules https://nodejs.org/api/modules.html#modules_folders_as_modules

答案 1 :(得分:1)

Frome reqire的文档:

  

一旦Node.js找到node_modules文件夹,它就会尝试加载   给定模块作为(.js)Javascript文件或作为命名子目录   并且,如果找到命名的子目录,则它将尝试加载该文件   以各种方式。因此,例如,如果您发出加载模块的请求,请“test”:

var utils = require( "test" );
     

... Node.js将对“node_modules”执行分层目录搜索   并通过以下方式“测试”:

./node_modules/test.js
./node_modules/test/index.js
./node_modules/test/package.json

所以,答案是:File首先,Directory秒,Module第三。

答案 2 :(得分:1)

这种情况下的优先级(文件夹与文件)将根据package.json

而有所不同

案例1: -

如果你在package.json中提到了一个正确的js文件路径, 那么"测试"里面的js文件文件夹模块将执行。

案例2: -

假设您在测试文件夹中没有任何package.json。 然后test.js文件将执行。

案例3: -

如果你没有test.js文件和test.json文件在test文件夹中,那么文件夹模块中的默认文件(index.js)将会执行。