What's the difference between process.cwd() vs __dirname?

后端 未结 4 645
谎友^
谎友^ 2020-11-29 14:54

What\'s the difference between

console.log(process.cwd())

and

console.log(__dirname);

I\'ve seen both use

相关标签:
4条回答
  • 2020-11-29 15:34

    Knowing the scope of each can make things easier to remember.

    process is node's global object, and .cwd() returns where node is running.

    __dirname is module's property, and represents the file path of the module. In node, one module resides in one file.

    Similarly, __filename is another module's property, which holds the file name of the module.

    0 讨论(0)
  • 2020-11-29 15:42

    $ find proj

    proj
    proj/src
    proj/src/index.js
    

    $ cat proj/src/index.js

    console.log("process.cwd() = " + process.cwd());
    console.log("__dirname = " + __dirname);
    

    $ cd proj; node src/index.js

    process.cwd() = /tmp/proj
    __dirname = /tmp/proj/src
    
    0 讨论(0)
  • 2020-11-29 15:44

    process.cwd() returns the current working directory,

    i.e. the directory from which you invoked the node command.

    __dirname returns the directory name of the directory containing the JavaScript source code file

    0 讨论(0)
  • 2020-11-29 15:49

    As per node js doc process.cwd()

    cwd is a method of global object process, returns a string value which is the current working directory of the Node.js process.

    As per node js doc __dirname

    The directory name of current script as a string value. __dirname is not actually a global but rather local to each module.

    Let me explain with example,

    suppose we have a main.js file resides inside C:/Project/main.js and running node main.js both these values return same file

    or simply with following folder structure

    Project 
    ├── main.js
    └──lib
       └── script.js
    

    main.js

    console.log(process.cwd())
    // C:\Project
    console.log(__dirname)
    // C:\Project
    console.log(__dirname===process.cwd())
    // true
    

    suppose we have another file script.js files inside a sub directory of project ie C:/Project/lib/script.js and running node main.js which require script.js

    main.js

    require('./lib/script.js')
    console.log(process.cwd())
    // C:\Project
    console.log(__dirname)
    // C:\Project
    console.log(__dirname===process.cwd())
    // true
    

    script.js

    console.log(process.cwd())
    // C:\Project
    console.log(__dirname)
    // C:\Project\lib
    console.log(__dirname===process.cwd())
    // false
    
    0 讨论(0)
提交回复
热议问题