Node.js ‘__dirname’ vrs ‘process.cwd()’

В последнее время я использую Nodejs почти во всех своих проектах, это одна из самых популярных технологий бэкенда на сегодняшний день. После нескольких проектов с Nodejs я вскоре понял, что большинство разработчиков, как и я, испытывают трудности с определением тонкой разницы между двумя глобальными объектами Node, такими как __dirname и process.cwd().

Что такое NodeJS?

Node.js — это среда выполнения JavaScript с открытым исходным кодом, которая была создана на основе движка V8 Engine в Chrome. Традиционный JavaScript выполняется в браузерах, но с помощью Node.js мы можем выполнять JavaScript на серверах, аппаратных устройствах и т. д.

Теперь давайте посмотрим, что представляют собой эти глобальные переменные и чем они отличаются друг от друга.

__dirname:

Это локальная переменная, которая возвращает имя директории текущего модуля. Она возвращает расположение папки текущего файла JavaScript.

process.cwd():

В Node.js есть глобальный объект под названием global, а объект process находится внутри глобального объекта.
process.cwd() дает имя директории, из которой обслуживается приложение NodeJS. Другими словами, рабочий каталог процесса NodeJS.

Практические демонстрации

  1. В приложении node Application у меня есть App.js в качестве входного файла в корневом каталогеapp.js.

Запустите app.js в терминале

node app.js
Войдите в полноэкранный режим Выйти из полноэкранного режима

OUTPUT

======== process.cwd()=========
C:Usersqbentilblog6
======== __dirname=========
C:Usersqbentilblog6
Войти в полноэкранный режим Выйти из полноэкранного режима
  1. Создайте следующую структуру проекта

фрагмент кода в try/try.js

фрагмент кода для app.js

run node app.js
Вход в полноэкранный режим Выйти из полноэкранного режима

OUTPUT

======== process.cwd() from /try/try.js=========
C:UsersUserDesktopblog6
======== __dirname from /try/try.js=========
c:UsersUserDesktopblog6try
PS C:UsersUserDesktopblog6> 
Войти в полноэкранный режим Выход из полноэкранного режима

Приведенный выше вывод показывает, что каталог файла try.js находится по адресу blog6/try, в то время как текущий процесс node запущен в папке blog6/.

Заключение

Несмотря на то, что выше приведены переменные области видимости, важно обратить внимание на следующие различия, чтобы знать, какую переменную вызывать в любой момент в вашем приложении

Разница между __dirname и process.cwd()

__dirname process.cwd()
Возвращает имя каталога, содержащего файл исходного кода. Возвращает имя текущего рабочего каталога, из которого обслуживается процесс NodeJS.
Зависит от текущего каталога. Зависит от вызывающей команды node.
Является локальным для каждого модуля. Является глобальным объектом узла.

Как разработчику NodeJS, очень важно знать, как использовать эти переменные, поскольку иногда это может сильно запутать и вызвать ненужные ошибки в вашем приложении.

Счастливого хакинга!

Bentil здесь🚀
Если вам нравится мой контент, вы можете поддержать меня здесь, чтобы продолжать работу.👇

Дайте мне знать о ваших вопросах или предложениях в поле для комментариев ниже

Оцените статью
devanswers.ru
Добавить комментарий