Trung BìnhNode.js iconNode.js

Sự khác biệt giữa __dirname và __filename trong Node.js?

__dirname resolve tuyệt đối từ file, không phải từ process.cwd() — trong ESM dùng fileURLToPath(import.meta.url) thay thế vì __dirname không tồn tại. __dirname cho đường dẫn tuyệt đối đến thư mục chứa file đang chạy, __filename cho đường dẫn đến chính file đó.

Ví dụ thực tế: path.join(__dirname, 'templates', 'email.html') để đọc file template bất kể app được chạy từ thư mục nào — nếu dùng đường dẫn tương đối './templates/email.html' sẽ resolve từ process.cwd() (thư mục làm việc hiện tại) và có thể sai khi chạy từ nơi khác.

Pitfall quan trọng với ES Modules: __dirname__filename không tồn tại trong file .mjs hoặc khi type: module trong package.json.

Xem toàn bộ Node.js cùng filter theo level & chủ đề con.

Mở danh sách Node.js