在Node.js中,process.cwd()和__dirname都用于获取路径,但它们指向的路径不同,用途也有所区别。
- process.cwd() 返回的是当前工作目录的路径。这是启动Node.js进程时所在的目录,它可以通过Node.js进程中的任何地方被访问。它的值可以通过改变工作目录(例如使用process.chdir()方法)而改变。
- __dirname 是一个全局变量,表示当前执行脚本所在的目录。无论从哪里启动应用,__dirname总是指向被执行的js文件所在的文件夹的路径。它是一个常量,不会因为工作目录的改变而改变。
简单来说,process.cwd()是关于从哪里运行node命令的路径,而__dirname是关于当前执行的脚本文件所在的路径。
举个例子:
假设你有一个项目结构如下:
/my-project
/folderA
- scriptA.js
- scriptB.js
如果你在/my-project目录下运行node folderA/scriptA.js,那么:
-
process.cwd()将返回/my-project,因为这是你运行命令的地方。
-
__dirname在scriptA.js中将返回/my-project/folderA,因为这是scriptA.js文件所在的目录。 如果你改变了工作目录到folderA,然后运行scriptA.js,process.cwd()将返回新的工作目录,但__dirname仍然指向脚本所在的目录。