有什么区别

console.log(process.cwd())

and

console.log(__dirname);

我在类似的情况下看到过这两种用法。


当前回答

根据node js文档 process.cwd ()

cwd是全局对象进程的一个方法,返回一个字符串值,该值是Node.js进程的当前工作目录。

根据node js文档 __dirname

当前脚本的目录名称为字符串值。__dirname实际上不是全局变量,而是每个模块的局部变量。

让我用例子来解释:

假设我们有一个main.js文件,位于C:/Project/main.js中 运行node main.js这两个值都会返回相同的文件。

或者简单地使用下面的文件夹结构

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

假设我们在项目的子目录下有另一个script.js文件,即C:/ project /lib/script.js和运行节点main.js,需要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

它可以简单地表述为: process.cwd()返回我们运行节点进程的目录的值,而 __dirname返回当前运行文件所在目录的值。

其他回答

$ 查找项目列表

proj
proj/src
proj/src/index.js

$ cat proj/src/index.js

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

$ CD proj;节点src / index.js

process.cwd() = /tmp/proj
__dirname = /tmp/proj/src

知道每个词的范围可以让事情更容易记住。

Process是节点的全局对象,.cwd()返回节点运行的位置。

__dirname是模块的属性,表示模块的文件路径。在node中,一个模块位于一个文件中。

类似地,__filename是另一个模块的属性,它保存了模块的文件名。

根据node js文档 process.cwd ()

cwd是全局对象进程的一个方法,返回一个字符串值,该值是Node.js进程的当前工作目录。

根据node js文档 __dirname

当前脚本的目录名称为字符串值。__dirname实际上不是全局变量,而是每个模块的局部变量。

让我用例子来解释:

假设我们有一个main.js文件,位于C:/Project/main.js中 运行node main.js这两个值都会返回相同的文件。

或者简单地使用下面的文件夹结构

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

假设我们在项目的子目录下有另一个script.js文件,即C:/ project /lib/script.js和运行节点main.js,需要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

它可以简单地表述为: process.cwd()返回我们运行节点进程的目录的值,而 __dirname返回当前运行文件所在目录的值。

Process.cwd()返回当前工作目录,

例如,调用node命令的目录。

__dirname返回JavaScript源代码文件所在目录的目录名