__filename
文件的绝对路径
// /Users/w/code2/node-demo/path.js
console.log('__filename', __filename); // 打印:/Users/w/code2/node-demo/path.js
__dirname
文件所在目录的绝对路径
// /Users/w/code2/node-demo/path.js
console.log('__dirname', __dirname); // 打印:/Users/w/code2/node-demo
process.cwd()
执行命令所在目录
// /Users/w/code2/node-demo/path.js
console.log('process.cwd()', process.cwd()); // 打印:/Users/w/code2/node-demo
path.resolve
解析为绝对路径
// /Users/w/code2/node-demo/path.js
const path = require('path');
console.log('path.resolve("./")', path.resolve('./')); // 打印:/Users/w/code2/node-demo
path.join
拼接字符串为路径
// /Users/w/code2/node-demo/path.js
const path = require('path');
console.log('path.join("/")', path.join()); // 打印:.
区别
__dirname 是相对于代码所在文件,而process.cwd() 和 path.resolve 相对于程序执行命令所在目录:
在 /Users/w/code2 目录,执行:node node-demo/path.js:
// /Users/w/code2/node-demo/path.js
const path = require('path');
console.log('__dirname', __dirname); // 打印:/Users/w/code2/node-demo
console.log('process.cwd()', process.cwd()); // 打印:/Users/w/code2
console.log('path.resolve("./")', path.resolve('./')); // 打印:/Users/w/code2