美文网首页
Node中的__dirname、__filename、proce

Node中的__dirname、__filename、proce

作者: 思路清奇 | 来源:发表于2021-05-17 11:58 被阅读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() 时才使用相对路径(./, ../)的写法,其他地方一律使用绝对路径
    

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

    相关文章

      网友评论

          本文标题:Node中的__dirname、__filename、proce

          本文链接:https://www.haomeiwen.com/subject/hwcjjltx.html