有什么区别
console.log(process.cwd())
而且
console.log(__dirname);
我在类似的情况下看到过这两种用法。
process.cwd()返回当前工作目录,
process.cwd()
例如,调用node命令的目录。
node
__dirname返回JavaScript源代码文件所在目录的目录名
__dirname
As per nodejs doc process.cwd() < / p >
cwd是全局对象process的一个方法,返回一个字符串值,该值是Node.js进程的当前工作目录。
cwd
process
As per nodejs doc __dirname < / p >
当前脚本的目录名称为字符串值。__dirname实际上不是全局变量,而是每个模块的局部变量。
让我用例子来解释:
假设我们有一个位于C:/Project/main.js中的main.js文件 和运行node main.js这两个值返回相同的文件
C:/Project/main.js
main.js
node main.js
或者简单地使用下面的文件夹结构
Project ├── main.js └──lib └── script.js
console.log(process.cwd()) // C:\Project console.log(__dirname) // C:\Project console.log(__dirname === process.cwd()) // true
假设我们在project的子目录中有另一个文件script.js,即C:/Project/lib/script.js和运行node main.js,它们需要script.js
script.js
C:/Project/lib/script.js
require('./lib/script.js') console.log(process.cwd()) // C:\Project console.log(__dirname) // C:\Project console.log(__dirname === process.cwd()) // true
console.log(process.cwd()) // C:\Project console.log(__dirname) // C:\Project\lib console.log(__dirname === process.cwd()) // false
它可以简单地表述为: process.cwd()返回我们运行节点进程的目录的值,而 __dirname返回当前运行文件所在目录的值。
它可以简单地表述为:
process.cwd()返回我们运行节点进程的目录的值,而
__dirname返回当前运行文件所在目录的值。
知道它们的范围可以让事情更容易记住。
process是node的全局对象,而.cwd()返回节点运行的位置。
.cwd()
__dirname是module的属性,表示模块的文件路径。在node中,一个模块位于一个文件中。
module
类似地,__filename是另一个module的属性,它保存了模块的文件名。
__filename
find proj美元
find proj
proj proj/src proj/src/index.js
cat 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美元
cd proj; node src/index.js
process.cwd() = /tmp/proj __dirname = /tmp/proj/src