node.js如何要求方法解释相对路径?

时间:2017-09-18 17:38:25

标签: node.js require

我无法理解节点的require方法如何解析相对路径。

假设我有一个像这样的文件结构:

root
|--- main.js
|
|--- importantUtilities.js
|
|--- apps
     |
     |--- app1.js

如果/root/main.js/root/apps/app1.js都需要/root/importantUtilities.js,则会对require函数进行不同的参数化设置:

// File: /root/main.js

...
require('./importantUtilities.js');
...

// File: /root/apps/app1.js:

...
require('../importantUtilities.js');
...

没有必要预先__dirname,如果没有这条信息,我看不出require如何运作。

如何实现require为不同的文件描述符返回相同的文件?

编辑:以下示例的工作原理也让我大吃一惊(使用相同的文件结构):

// File: /root/main.js:

...
module.exports.getUtilities = function() { return require('./importantUtilities.js'); };
var utilities = module.exports.getUtilities(); // Works fine
...

// File: /root/apps/app1.js:

...
var main = require('../main.js');
var utilities = main.getUtilities(); // Works fine
...

似乎require甚至没有确定来自调用范围的基本路径;更重要的是,源代码中每次出现的require都与源代码的文件路径信息绑定在一起。这是对的吗?

这有什么用?

1 个答案:

答案 0 :(得分:0)

  

源代码中每次出现的require都与源代码的文件路径信息绑定

是的,这完全正确。更确切地说,根据docs

  

要求(X)来自路径Y的模块

     
      
  1. 如果X以' ./'开头;或者' /'或' ../&# 39;

         

    一个。 LOAD_AS_FILE(Y + X)

  2.   

即。它将当前文件的路径与require d。

路径连接起来