process.cwd()和__dirname有什么区别?
有什么区别
console.log(process.cwd())
和
console.log(__dirname);
我已经看到两个类似的情况下使用。
process.cwd()
返回当前工作目录,
即您从中调用node
命令的目录。
__dirname
返回包含JavaScript源代码文件的目录的目录名称
按照节点js doc process.cwd()
cwd
是全局对象process
一个方法,返回一个string值,它是Node.js进程的当前工作目录。
按照节点js doc __dirname
当前脚本的目录名称作为string值。 __dirname实际上并不是一个全局的,而是每个模块本地的。
让我用例子来解释,
假设我们有一个main.js
文件驻留在C:/Project/main.js
node 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
node main.js
和运行node main.js
,它们需要script.js
main.js
require('./assets/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