Node.js 中 process.cwd() 和 __dirname 的区别
NodeJS 是构建在 Chrome 的 V8 引擎之上的 JavaScript 运行时。传统的 JavaScript 在浏览器中执行,但使用 Node.js,我们可以在服务器、硬件设备等上执行 JavaScript。
process.cwd():与浏览器上的窗口对象类似,Node.js 有一个名为 global 的全局对象,进程对象位于全局对象内部。此进程对象提供有关当前 Node.js 进程的信息并对其进行控制。它给出了 Node.js 进程的当前工作目录。
__dirname:它是一个局部变量,返回当前模块的目录名。它返回当前 JavaScript 文件的文件夹路径。
Node.js 中 process.cwd() 与 __dirname 的区别如下:
process.cwd() | _dirname |
---|---|
It returns the name the of current working directory. | It returns the directory name of the directory containing the source code file. |
It is the node’s global object. | It is local to each module. |
It depends on the invoking node command. | It depends on the current directory. |
示例 1:
index.js
// Logging process.cwd() output
console.log("process.cwd(): ", process.cwd());
// Logging __dirname output
console.log("__dirname: ", __dirname);
index.js
// Read and execute the index2.js file
require('./sub1/index2.js')
index2.js
// Logging process.cwd() output
console.log("process.cwd(): ", process.cwd());
// Logging __dirname output
console.log("__dirname: ", __dirname);
跑步 index.js文件使用以下命令:
node index.js
输出:
process.cwd(): C:\src
__dirname: C:\src
在这种情况下,节点进程正在当前目录中运行
示例 2:使用以下文件夹结构创建以下 2 个文件:
src/
___ index.js
___ src2/
___index2.js
文件路径:src/index.js
index.js
// Read and execute the index2.js file
require('./sub1/index2.js')
文件路径:src/src2/index2.js
index2.js
// Logging process.cwd() output
console.log("process.cwd(): ", process.cwd());
// Logging __dirname output
console.log("__dirname: ", __dirname);
跑步 index.js文件使用以下命令:
node index2.js
输出:
process cwd: C:\src
__dirname: C:\src\src2
这表明当前节点进程正在src/文件夹中运行,即节点index.js并且文件index2.js的目录位于src/src2 。