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

比方说,我有一个entry.js文件entry.js

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

如果我在与entry.js相同的包中有一个名为“test”的文件夹和一个文件,执行过程如何,因为两者具有相同的名称? 哪个模块具有最高优先级?

这种情况下的优先级(文件夹vs文件)将根据package.json而有所不同

情况1:-

如果你在package.json中提到了一个合适的js文件path,那么将会执行“test”文件夹模块中的js文件。

案例2: –

假设您在testing文件夹中没有任何package.json。 那么test.js文件将会执行。

案例3: –

如果test文件夹中没有test.js文件和package.json文件,则会执行文件夹模块中的默认文件(index.js)。

检查优先权将是下一个:

  1. ./test.js
  2. ./test.json
  3. ./test.node
  4. ./test/index.js
  5. ./test/index.node

资料来源:

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

弗罗姆reqire的文件:

一旦Node.jsfind了node_modules文件夹,它就会尝试以(.js)Javascript文件或命名的子目录加载给定的模块。
而且,如果它find了命名的子目录,它将尝试以各种方式加载文件。 所以,例如,如果你提出加载模块的请求,“test”:

 var utils = require( "test" ); 

Node.js将执行一个分层目录search“node_modules”
和“testing”在以下方面:

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

所以,答案是: File第一, Directory第二, Module第三。