2012-03-26 63 views

回答

284

process.cwd()返回當前工作目錄,

即從中調用的node命令的目錄。

__dirname返回包含JavaScript源代碼文件

+4

這是否意味着除了'require()'之外,'process.cwd()'是''.'的同義詞嗎? – 2015-08-29 09:44:25

+6

@AlexanderGonchiy正確,'.'是相對於'process.cwd()'(所以是同義詞),除了'require()'相對於當前正在執行的文件起作用。有關更多信息,請參閱[這裏](http://stackoverflow.com/a/16730379/927631)。 – Dwelle 2015-11-05 17:53:52

14

由於每個節點的js doc process.cwd()

cwd的目錄的目錄名是全局對象process的方法,返回一個字符串值,該值是當前Node.js進程的工作目錄。

按照當前腳本作爲字符串值的節點的js doc __dirname

目錄名。 __dirname實際上不是全局的,而是每個模塊本地的。

讓我用例子來解釋,

假設我們有一個main.js文件駐留內部C:/Project/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需要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