require(__ dirname + path)和require(./ path)之间有什么区别?

根据这个问题: node.js中的__dirname和./s有什么区别? 这两行应该是一样的:

require(__dirname + '/folder/file.js'); require('./folder/file.js'); 

我总是习惯使用第二个选项。 但是现在一个项目,我接手了,以前的开发者每次都require(__dirname + ...)

就我个人而言,我觉得这很难阅读,我想改变它,但也许有这个语法我缺less一些优势? 或者它是首选版本,我一直在做错的?

为了防万一,这些库有时会在启用了es6的node.js上运行,有时在io.js上运行(没有附加标志)。

当使用require()时没有区别,使用__dirname是多余的。 模块加载器将负责为您正确parsingpath。

当使用fs.readFile之类的fs方法时,如果当前工作目录不等于__dirname__dirname 。 如果我想读取与我的脚本相同的目录中名为file.txt的文件的内容,我可以这样做:

 var Fs = require('fs'); var Path = require('path'); Fs.readFile(Path.join(__dirname, 'file.txt'), ...); 

那么当我启动执行这个代码的节点进程时,不pipe我的cwd是什么。