2012-03-26 16 views

Odpowiedz

284

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

+4

Czy to znaczy, że 'process.cwd()' jest synonimem '.' dla wszystkich przypadków z wyjątkiem' require() '? –

+6

@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

14

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 
Powiązane problemy