前言
在開發 Node.js 專案時,我們很常需要處理「路徑」:
- 要找到一個檔案在哪裡
- 要讀取設定檔
- 要指定靜態檔案位置(像是 HTML、圖片)
這邊,Node.js幫我準備了兩個方便的全域變數:__dirname
和 __filename
,與超好用的核心模組 path
。
__dirname、__filename
它們是 Node.js 預設就幫你放好的全域變數。
- __dirname:代表目前檔案所在的資料夾
- __filename:代表目前檔案的完整路徑(包含檔名)

__dirname、__filename使用範例
Node模組—Path
為什麼需要 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運用圖
貼合實際專案的情境
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);

實際專案情境圖