Jaka jest różnica międzyJaka jest różnica między process.cwd() a __dirname?
console.log(process.cwd())
i
console.log(__dirname);
Widziałem oba stosowane w podobnych kontekstach.
Jaka jest różnica międzyJaka jest różnica między process.cwd() a __dirname?
console.log(process.cwd())
i
console.log(__dirname);
Widziałem oba stosowane w podobnych kontekstach.
process.cwd()
zwraca bieżący katalog roboczy,
czyli katalogu, z którego powołuje komendy node
.
__dirname
zwraca nazwę katalogu do katalogu zawierającego kod źródłowy plik JavaScript
Zgodnie węzła js doc process.cwd()
cwd
to metoda globalnego obiektu process
, zwraca ciąg znaków, który jest obecny katalog roboczy procesu Node.js.
Zgodnie węzła js nazwy doc __dirname
katalogu bieżącego skryptu jako wartość ciągu. __nazwa nie jest globalna, ale raczej lokalna dla każdego modułu.
Pozwól mi wyjaśnić z przykład
Załóżmy, że mamy plik main.js
przebywa wewnątrz C:/Project/main.js
i działa node main.js
obie te wartości powrócić do tego samego pliku
lub po prostu z następującą strukturę folderów
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
załóżmy, że mamy kolejny plik script.js
pliki wewnątrz sub katalogu projektu tj C:/Project/lib/script.js
i działa node main.js
które wymagają script.js
main.js
require('./assets/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
Czy to znaczy, że 'process.cwd()' jest synonimem '.' dla wszystkich przypadków z wyjątkiem' require() '? –
@AlexanderGonchiy poprawne, '.' jest względne do' process.cwd() '(tak synonimicznie), z wyjątkiem' require() ', który działa w stosunku do bieżącego pliku wykonywalnego. Zobacz [tutaj] (http://stackoverflow.com/a/16730379/927631), aby uzyskać więcej informacji. – Dwelle