Node中的__dirname、__filename、proce
2021-05-17 本文已影响0人
思路清奇
Node.js中的文件路径大概有
// 绝对路径
__dirname,
__filename,
process.cwd(),
// 相对路径
./,
../
前三个都是绝对路径,为了便于比较,./ 和 ../ 我们通过 path.resolve('./')来转换为绝对路径。
__dirname: 获得当前执行文件所在目录的完整目录名
__filename: 获得当前执行文件的带有完整绝对路径的文件名
process.cwd():获得当前执行node命令时候的文件夹目录名
./: 文件所在目录
有require参与的情况下结果有所不同
__dirname: 总是返回被执行的 js 所在文件夹的绝对路径
__filename: 总是返回被执行的 js 的绝对路径
process.cwd(): 总是返回运行 node 命令时所在的文件夹的绝对路径
./: 跟 process.cwd() 一样,返回 node 命令时所在的文件夹的绝对路径
谈及原因,来了解一下require() 的基本用法吧:
下面的内容来自require() 源码解读,由阮一峰翻译自《Node使用手册》。
由此可见,关于 ./ 正确的结论是:
在 require() 中使用是跟 __dirname 的效果相同,不会因为启动脚本的目录不一样而改变;
在其他情况下跟 process.cwd() 效果相同,是相对于启动脚本所在目录的路径
最后总结一下:
__dirname: 获得当前执行文件所在目录的完整目录名
__filename: 获得当前执行文件的带有完整绝对路径的文件名
process.cwd():获得当前执行node命令时候的文件夹目录名
./: 不使用require时候,./与process.cwd()一样,使用require时候,与__dirname一样
只有在 require() 时才使用相对路径(./, ../)的写法,其他地方一律使用绝对路径
本文仅作为自我学习总结,非原创文章。