Caminhos absolutos e exigem ()

Um rápido:

Normalmente, ao fazer referência a um arquivo com require()um caminho relativo, é usado. Este caminho deve refletir a posição do arquivo atual na estrutura de diretórios do seu site.

No entanto, prefiro usar um caminho absoluto com base apenas no diretório de nível superior do meu site e não em qualquer arquivo em que estou atualmente.

Então, incluo este snippet no topo do meu main.js:

global.base_dir = __dirname;
global.abs_path = function(path) {
return base_dir + path;
}
global.include = function(file) {
return require(abs_path('/' + file));
}

Agora, quando você estiver em um arquivo, em vez de escrever algo assim:

require('../../../lib/Utils.js');

Você pode escrever isto:

include('lib/Utils.js');

Além de ser mais legível, você também não precisa se lembrar em que ponto da hierarquia de arquivos você está quando deseja incluir algo.

Outro benefício é que você não terá que atualizar nenhum caminho se mover um arquivo que contém um include().

Por fim, quando precisar obter o caminho completo para um arquivo (talvez para uso com o módulo fs ), você pode usar a função global:

abs_path('lib/Utils.js');

Felicidades!