Какая разница между
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, которое содержит имя файла модуля.