最近再看nodejs自定义模块的查找的时候有一点疑惑的地方。比如我的目录如下所示:
我的server.js的内容是var test=require('test');
,其他文件内容全部都是
console.log('我的目录是'+__dirname)
console.log('我的位置是'+__filename)
运行server.js后,按我的理解查找顺序应该是先查找aaa/node_modules/test.js
,如果没有的话查找aaa/node_modules/test/package.json
文件获取main属性进行进一步的查找。然而我运行的结果是在aaa/node_modules/test
存在packag.json文件的情况下,它会优先加载main字段指向的文件,而不是先加载aaa/node_modules/test.js
文件。这让我很疑惑。按nodejs官方文档来说,不是先加载文件再加载目录吗,为什么package.json文件的有无还会影响整个查找过程。求解答!