Использование узла REPL для записи значения __dirname

Если я напишу скрипт, содержащий console.log(__dirname); записывает значение __dirname, Но если я попробую то же самое для узла REPL, как это произойдет:

 > console.log(__dirname)
 ReferenceError: __dirname is not defined

Мысли?

1 ответ

Решение

От этого В чем разница между __dirname и./ в node.js? написанный d512

В Node.js, __dirname всегда каталог, в котором находится исполняемый в данный момент скрипт (см. это). Так что если вы набрали __dirname в /d1/d2/myscript.js значение будет /d1/d2.

В документации сказано, что __dirname равно path.dirname, Если вы печатаете path.dirname в отражении он говорит вам это:

> console.log(path.dirname)
[Function: dirname]
undefined

Теперь я думаю: поскольку это репл, у вас нет файла, который хранится где-то на диске. Он просто читает команду, оценивает ее и выводит на консоль.

Кто-то с большим опытом в REPLS мог бы дать более длинный и подробный ответ, но я думаю, что это изложило концепцию.

Другие вопросы по тегам