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使用手册》。

Bimg20174121494579883637.png

由此可见,关于 ./ 正确的结论是:
在 require() 中使用是跟 __dirname 的效果相同,不会因为启动脚本的目录不一样而改变;
在其他情况下跟 process.cwd() 效果相同,是相对于启动脚本所在目录的路径

最后总结一下:

__dirname: 获得当前执行文件所在目录的完整目录名
__filename: 获得当前执行文件的带有完整绝对路径的文件名
process.cwd():获得当前执行node命令时候的文件夹目录名
./: 不使用require时候,./与process.cwd()一样,使用require时候,与__dirname一样
只有在 require() 时才使用相对路径(./, ../)的写法,其他地方一律使用绝对路径

本文仅作为自我学习总结,非原创文章。

上一篇下一篇

猜你喜欢

热点阅读