Module tích hợp path dựng và thao tác đường dẫn file đúng trên mọi hệ điều hành. Nối chuỗi đường dẫn thủ công bằng / sẽ hỏng trên Windows (vốn dùng \) và xử lý sai các trường hợp biên — path lo tất cả một cách đáng tin cậy.
// ❌ mong manh, phụ thuộc OS, dễ lỗi
const filePath = baseDir + "/" + "sub" + "/" + fileName;
// hỏng trên Windows (\), gấp đôi dấu / nếu baseDir kết thúc bằng /, v.v.
import path from "path";
// ✅ dùng đúng dấu phân cách cho OS, chuẩn hóa dấu /
const filePath = path.join(baseDir, "sub", fileName);
// Linux/Mac: baseDir/sub/file.txt Windows: baseDir\sub\file.txt
path.join chèn dấu phân cách đúng, gộp dấu / lặp/thừa và giải quyết các đoạn ../..
path.resolve("src", "app.js"); // → đường dẫn TUYỆT ĐỐI từ cwd
path.basename("/a/b/file.txt"); // "file.txt"
path.dirname("/a/b/file.txt"); // "/a/b"
path.extname("file.txt"); // ".txt"
path.parse("/a/b/file.txt"); // { dir, base, name, ext }
path.sep; // "/" hoặc "\" tùy OS
// CommonJS — biến toàn cục có sẵn
const configPath = path.join(__dirname, "config.json");
// ES Modules — __dirname không tồn tại; suy ra từ import.meta.url
import { fileURLToPath } from "url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
Dựng đường dẫn tương đối với file hiện tại (bằng __dirname, hoặc tương đương ESM) là cách an toàn để tham chiếu file — độc lập với nơi tiến trình được khởi động.
path.join → chỉ nối các đoạn (tương đối vẫn tương đối)
path.resolve → tạo đường dẫn TUYỆT ĐỐI (giải quyết từ cwd / phải-sang-trái)
Dùng path thay vì nối chuỗi làm code xử lý file chạy đa nền tảng và vững chắc — một nguồn lỗi thường gặp khi code viết trên Mac/Linux hỏng trên Windows, hoặc khi nối chuỗi tạo ra đường dẫn sai định dạng.
Đó là một thói quen nhỏ với lợi ích độ tin cậy vượt trội, và biết join vs resolve, cùng cách lấy __dirname trong ESM, bao quát các nhu cầu đường dẫn hằng ngày trong mọi dự án Node có động đến hệ thống file.
Thư viện câu hỏi phỏng vấn IT với đáp án chi tiết — từ Junior đến Senior.
Ủng hộ