1. 程式人生 > 其它 >nodejs 路徑問題 相對路徑 絕對路徑

nodejs 路徑問題 相對路徑 絕對路徑

Node.js 中 __dirname 和 ./ 的區別

https://blog.csdn.net/zsensei/article/details/79094714

 

What is the difference between __dirname and ./ in node.js?

https://stackoverflow.com/questions/8131344/what-is-the-difference-between-dirname-and-in-node-js

 

淺析 NodeJs 的幾種檔案路徑

https://github.com/imsobear/blog/issues/48

 

-------------------------------------------------------------------------------------------------------

說法一、

__dirname 總是指向被執行 js 檔案的絕對路徑,所以當你在 /d1/d2/myscript.js 檔案中寫了 __dirname, 它的值就是 /d1/d2 。

相反,./ 會返回你執行 node 命令的路徑,例如你的工作路徑。

有一個特殊情況是在 require() 中使用 ./ 時,這時的路徑就會是含有 require() 的指令碼檔案的相對路徑。

 

說法二、

那麼,不好意思不是問題來了~T_T,我們可以得出一些膚淺的結論了:

  • __dirname: 總是返回被執行的 js 所在資料夾的絕對路徑
  • __filename: 總是返回被執行的 js 的絕對路徑
  • process.cwd(): 總是返回執行 node 命令時所在的資料夾的絕對路徑
  • ./: 跟 process.cwd() 一樣、一樣、一樣的嗎?

 

關於 ./ 正確的結論是:

在 require() 中使用是跟 __dirname 的效果相同,不會因為啟動指令碼的目錄不一樣而改變,

在其他情況下跟 process.cwd() 效果相同,是相對於啟動指令碼所在目錄的路徑。