根据这个问题:What is the difference between __dirname and ./ in node.js?这两行应该是相同的:
require(__dirname + '/folder/file.js');
require('./folder/file.js');
我总是习惯使用第二个选项。但是现在我接手了一个项目,以前的开发人员每次都使用require(__dirname + ...)
。
就我个人而言,我认为阅读起来比较困难,我想改变它,但也许这种语法有一些优点我不知道了?或者它是首选版本,我一直都做错了吗?
万一它很重要,库有时在node.js上运行,启用了es6,有时在io.js上运行(没有额外的标志)。
答案 0 :(得分:2)
使用require()
时没有区别,使用__dirname
是多余的。模块加载器将负责为您正确解析路径。
当使用fs
之类的fs.readFile
方法时,如果您当前的工作目录不等于__dirname
,则会有所不同。如果我想在与脚本相同的目录中读取名为file.txt的文件的内容,我会这样做:
var Fs = require('fs');
var Path = require('path');
Fs.readFile(Path.join(__dirname, 'file.txt'), ...);
然后,当我启动执行此代码的节点进程时,我的cwd是什么并不重要。