NodeJS 中 __dirname、__filename 等用来表示路径的方法或属性的区别
__dirname当前文件的绝对路径,不会随执行命令的目录改变而改变__filename当前文件的绝对路径,不会随执行命令的目录改变而改变module.filename当前文件的绝对路径,不会随执行命令的目录改变而改变process.cwd()运行当前脚本的工作目录路径,会随着执行脚本时的目录而改变process.chdir()更改工作目录
比方在 /home/wsl 下有个名为 test 的项目:
test
└── parent
└── child
└── app.js
其中 app.js 文件的内容如下:
console.log(__dirname)
console.log(__filename)
console.log(module.filename)
console.log(module.filename === __filename)
console.log(process.cwd())
process.chdir('/home/wsl')
console.log(process.cwd())
然后在 test 目录下执行 node parent/child/app.js,输出的结果如下:
/home/wsl/test/parent/child
/home/wsl/test/parent/child/app.js
/home/wsl/test/parent/child/app.js
true
/home/wsl/test
/home/wsl