Выбор ответа Junior Модули и npm обновлено
__dirname в ES-модуле
Вопрос
В .mjs-файле в Node 22 нужно получить путь к папке текущего файла. Как правильно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: import.meta.dirname. В ESM нет обёртки CommonJS, поэтому dirname, filename и require не определены.
Варианты ответа
__dirnameimport.meta.dirnameправильный ответprocess.cwd()require.main.path
Разбор
В ESM нет обёртки CommonJS, поэтому __dirname, __filename и require не определены. В Node 22 есть import.meta.dirname и import.meta.filename; в старых версиях делали path.dirname(fileURLToPath(import.meta.url)).
__dirnameв ESM даст ReferenceError.process.cwd()это папка, откуда запущен процесс, а не папка файла.requireв ESM недоступен.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.