第5天認真學習 Node.js - __dirname、__filename 與 path 模組

更新 發佈閱讀 3 分鐘

前言

在開發 Node.js 專案時,我們很常需要處理「路徑」:
- 要找到一個檔案在哪裡
- 要讀取設定檔
- 要指定靜態檔案位置(像是 HTML、圖片)

這邊,Node.js幫我準備了兩個方便的全域變數:__dirname__filename,與超好用的核心模組 path

__dirname、__filename

它們是 Node.js 預設就幫你放好的全域變數

  • __dirname:代表目前檔案所在的資料夾
  • __filename:代表目前檔案的完整路徑(包含檔名)
__dirname、__filename使用範例

__dirname、__filename使用範例

Node模組—Path

Node.js PATH API 文件

為什麼需要 path 模組?

如果我們要組合路徑、取副檔名、跨平台處理(Windows 用\,mac/Linux 用 /),光靠 __dirname__filename 不方便。

Path常見API:

  • path.dirname()所在資料夾路徑
  • path.join() :路徑組合
  • path.basename()抓檔名
  • path.extname()抓副檔名
  • path.parse()分析路徑

示範path的API運用

var path = require('path'); 

// 抓目錄路徑
console.log(path.dirname('/src/scripts/hello.js'));
// 路徑合併
console.log(path.join(__dirname,'/src'));
// 抓檔名
console.log(path.basename('/src/scripts/hello.js'));
// 抓副檔名
console.log(path.extname('/src/scripts/hello.js'));
// 分析路徑
console.log(path.parse('/src/scripts/hello.js'));
示範path的API運用圖

示範path的API運用圖

貼合實際專案的情境

var path = require('path'); 

console.log("資料夾:", path.dirname(__filename));
console.log("檔名:", path.basename(__filename));
console.log("副檔名:", path.extname(__filename));
console.log("分析路徑:", path.parse(__filename));

const filePath = path.join(__dirname, 'public', 'index.html');
console.log("組合路徑:", filePath);
實際專案情境圖

實際專案情境圖


留言
avatar-img
留言分享你的想法!
avatar-img
邁向躺平的工程師 Leo
0會員
6內容數
天生宅習慣的我,與外面繁忙的工作環境格格不入,因此選擇了能在辦公室內進行的軟體工程師職業。雖然室內的空間不如外面那麼廣闊,但在舒適的環境中,我可以心無旁鶩地靜下心來,專注於研發與思考。這條轉職路線,正是天生為我開好的選擇,成為了我日常的 RD 養成之旅。
2025/08/26
這篇文章介紹 Node.js 內建的 HTTP 模組,說明如何使用 createServer、request、response 和 listen 方法建立 Web Server,並提供測試和除錯技巧。
Thumbnail
2025/08/26
這篇文章介紹 Node.js 內建的 HTTP 模組,說明如何使用 createServer、request、response 和 listen 方法建立 Web Server,並提供測試和除錯技巧。
Thumbnail
2025/08/25
這篇文章說明如何在 Node.js 中使用 require() 與 module.exports (以及 exports) 來設計模組,並在 app.js 中載入 data.js 模組。文中包含步驟、進階用法、exports 與 module.exports 的比較,以及注意事項。
Thumbnail
2025/08/25
這篇文章說明如何在 Node.js 中使用 require() 與 module.exports (以及 exports) 來設計模組,並在 app.js 中載入 data.js 模組。文中包含步驟、進階用法、exports 與 module.exports 的比較,以及注意事項。
Thumbnail
2025/08/24
這篇文章說明瀏覽器 (Browser) 與 Node.js 全域物件的差異,以及如何在 Node.js 中將變數掛載到全域物件。
Thumbnail
2025/08/24
這篇文章說明瀏覽器 (Browser) 與 Node.js 全域物件的差異,以及如何在 Node.js 中將變數掛載到全域物件。
Thumbnail
看更多
你可能也想看
Thumbnail
嶄新的台灣獨立調香師品牌Sunkronizo ,這個名稱源自希臘語「同步」的意思。讓香氛不單純只是氣味調製,更是個人風格的展現與靈魂意志延伸的一種溝通語言。 很適合接下來年底聖誕佳節送禮的試香組,以一星期中的日子來為全系列香氛產品命名, 是品牌創立後首個推出全系列概念作品...
Thumbnail
嶄新的台灣獨立調香師品牌Sunkronizo ,這個名稱源自希臘語「同步」的意思。讓香氛不單純只是氣味調製,更是個人風格的展現與靈魂意志延伸的一種溝通語言。 很適合接下來年底聖誕佳節送禮的試香組,以一星期中的日子來為全系列香氛產品命名, 是品牌創立後首個推出全系列概念作品...
Thumbnail
根據美國電影協會(MPA)主辦的「串流服務如何推動臺灣創意經濟」論壇內容,深入探討串流平臺對臺灣影視產業的影響、數據分析、政府政策建議、內容國際化策略,以及臺灣與「韓流」的差距。文章提出 awwrated 在串流生態系中的潛在角色,強調數據、策略與自信是臺灣影視產業發展的關鍵。
Thumbnail
根據美國電影協會(MPA)主辦的「串流服務如何推動臺灣創意經濟」論壇內容,深入探討串流平臺對臺灣影視產業的影響、數據分析、政府政策建議、內容國際化策略,以及臺灣與「韓流」的差距。文章提出 awwrated 在串流生態系中的潛在角色,強調數據、策略與自信是臺灣影視產業發展的關鍵。
Thumbnail
本文探討串流平臺(VOD)如何徹底改變好萊塢和臺灣影視產業的生態。從美國電影協會(MPA)的數據報告,揭示串流服務在臺灣的驚人普及率與在地內容的消費趨勢。文章分析國際作品如何透過在地化元素開拓新市場。同時,作者也擔憂政府過度監管可能扼殺臺灣影視創新自由,以越南為鑑,呼籲以開放態度擁抱串流時代的新機遇
Thumbnail
本文探討串流平臺(VOD)如何徹底改變好萊塢和臺灣影視產業的生態。從美國電影協會(MPA)的數據報告,揭示串流服務在臺灣的驚人普及率與在地內容的消費趨勢。文章分析國際作品如何透過在地化元素開拓新市場。同時,作者也擔憂政府過度監管可能扼殺臺灣影視創新自由,以越南為鑑,呼籲以開放態度擁抱串流時代的新機遇
Thumbnail
Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
Thumbnail
Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
Thumbnail
本章節將引導你如何建立一個TypeScript開發環境,這包括安裝Node.js、npm和TypeScript,建立一個TypeScript項目,設置編輯器,以及編寫和編譯TypeScript代碼。在完成這些步驟之後,你將能夠編寫、編譯和運行TypeScript代碼。
Thumbnail
本章節將引導你如何建立一個TypeScript開發環境,這包括安裝Node.js、npm和TypeScript,建立一個TypeScript項目,設置編輯器,以及編寫和編譯TypeScript代碼。在完成這些步驟之後,你將能夠編寫、編譯和運行TypeScript代碼。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
Express 是一個流行的 web 框架,使用 JavsScript 實現,執行在 node 環境上,主要用來寫後端應用。
Thumbnail
Express 是一個流行的 web 框架,使用 JavsScript 實現,執行在 node 環境上,主要用來寫後端應用。
Thumbnail
npm(全名 Node Package Manager,node套件管理器)
Thumbnail
npm(全名 Node Package Manager,node套件管理器)
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News