What's the difference between process.cwd() vs __dirname?
之间有什么区别
1 | console.log(process.cwd()) |
和
1 | console.log(__dirname); |
我已经看到两者都用在相似的上下文中。
即您从其中调用
根据节点js文档
根据节点js文档
当前脚本的目录名称,作为字符串值。 __dirname实际上不是全局变量,而是每个模块的局部变量。
让我举例说明,
假设我们有一个
并运行
或仅使用以下文件夹结构
1 2 3 4 | Project ├── main.js └──lib └── script.js |
main.js
1 2 3 4 5 6 | console.log(process.cwd()) // C:\Project console.log(__dirname) // C:\Project console.log(__dirname===process.cwd()) // true |
假设我们在项目的子目录(即
main.js
1 2 3 4 5 6 7 | require('./lib/script.js') console.log(process.cwd()) // C:\Project console.log(__dirname) // C:\Project console.log(__dirname===process.cwd()) // true |
script.js
1 2 3 4 5 6 | console.log(process.cwd()) // C:\Project console.log(__dirname) // C:\Project\lib console.log(__dirname===process.cwd()) // false |
了解每个范围可以使事情更容易记住。
同样,
$
1 2 3 | proj proj/src proj/src/index.js |
$
1 2 | console.log("process.cwd() =" + process.cwd()); console.log("__dirname =" + __dirname); |
$
1 2 | process.cwd() = /tmp/proj __dirname = /tmp/proj/src |