Какая разница между
console.log(process.cwd())
и
console.log(__dirname);
Я видел, что оба используются в аналогичных контекстах.
Какая разница между
console.log(process.cwd())
и
console.log(__dirname);
Я видел, что оба используются в аналогичных контекстах.
process.cwd()
возвращает текущий рабочий каталог,
то есть. каталог, из которого вы вызывали команду node
.
__dirname
возвращает имя каталога, содержащую исходный код JavaScript
По узлу js doc process.cwd()
cwd
- это метод глобального объектного process
, который возвращает строковое значение, являющееся текущим рабочим каталогом процесса Node.js.
По узлу js doc __dirname
Имя каталога текущего скрипта в виде строкового значения. На самом деле __dirname не является глобальным, а скорее локальным для каждого модуля.
Позвольте мне объяснить с примером,
Предположим, у нас есть файл main.js
который находится внутри C: /Project/main.js
и запущенный node main.js
Оба эти значения возвращают один и тот же файл.
или просто со следующей структурой папок
Project
├── main.js
└──lib
└── script.js
main.js
console.log(process.cwd())
// C:\Project
console.log(__dirname)
// C:\Project
console.log(__dirname===process.cwd())
// true
Предположим, у нас есть другой файл script.js
внутри подкаталога проекта, т.е. C: /Project/lib/script.js
и работающий node main.js
которого требуется script.js
main.js
require('./lib/script.js')
console.log(process.cwd())
// C:\Project
console.log(__dirname)
// C:\Project
console.log(__dirname===process.cwd())
// true
script.js
console.log(process.cwd())
// C:\Project
console.log(__dirname)
// C:\Project\lib
console.log(__dirname===process.cwd())
// false
Знание объема каждого может облегчить запоминание.
process
- это глобальный объект node
, и .cwd()
возвращает место, где работает узел.
__dirname
является свойством module
и представляет путь к файлу модуля. В узле один модуль находится в одном файле.
Аналогично, __filename
- это еще одно свойство module
, которое содержит имя файла модуля.