[英]path.resolve vs. relative path in Node.js?
我經常在節點中看到這樣的例子:
process.env.GOOGLE_APPLICATION_CREDENTIALS = path.resolve(__dirname, 'credentials.json')
我知道path
在處理更復雜的情況時是一個有用的模塊,但在這種情況下,為什么不直接使用
process.env.GOOGLE_APPLICATION_CREDENTIALS = './credentials.json'
?
從文檔中:
當前模塊的目錄名。 這與 __filename 的 path.dirname() 相同。
這意味着使用它時:
process.env.GOOGLE_APPLICATION_CREDENTIALS = './credentials.json'
NodeJS 將在當前工作目錄中查找credentials.json
使用時:
process.env.GOOGLE_APPLICATION_CREDENTIALS = path.resolve(__dirname, 'credentials.json')
NodeJS 將在該模塊所在的同一目錄中查找credentials.json
假設您有這樣的目錄結構:
/
+-- home
| +-- USERNAME
| +-- project
| +-- index.js
| +-- credentials.json
如果您運行以下命令(從根目錄/
):
cd home/USERNAME/project
node index.js
在這兩種情況下,代碼都可以正常工作。
但是如果你這樣運行它
node home/USERNAME/project/index.js
使用path.resolve
你會得到: home/USERNAME/project/credentials.json
這是正確的
如果沒有它,您將得到: ./credentials.json
,這是錯誤的,因為您當前的目錄是/
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.