什麼process.cwd()與__dirname有什麼區別?
console.log(process.cwd())
和
console.log(__dirname);
我見過類似的情境中都使用之間的差異。
什麼process.cwd()與__dirname有什麼區別?
console.log(process.cwd())
和
console.log(__dirname);
我見過類似的情境中都使用之間的差異。
由於每個節點的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
這是否意味着除了'require()'之外,'process.cwd()'是''.'的同義詞嗎? – 2015-08-29 09:44:25
@AlexanderGonchiy正確,'.'是相對於'process.cwd()'(所以是同義詞),除了'require()'相對於當前正在執行的文件起作用。有關更多信息,請參閱[這裏](http://stackoverflow.com/a/16730379/927631)。 – Dwelle 2015-11-05 17:53:52