Qual è la differenza traQual è la differenza tra process.cwd() vs __dirname?
console.log(process.cwd())
e
console.log(__dirname);
Ho visto entrambi utilizzati in contesti simili.
Qual è la differenza traQual è la differenza tra process.cwd() vs __dirname?
console.log(process.cwd())
e
console.log(__dirname);
Ho visto entrambi utilizzati in contesti simili.
process.cwd()
restituisce la directory di lavoro corrente,
vale a dire la directory da cui sono stati richiamati il comando node
.
__dirname
restituisce il nome della directory che contiene il file di codice sorgente JavaScript
Come per nodo js doc process.cwd()
cwd
è un metodo di oggetto globale process
, restituisce un valore stringa che è l'attuale directory di lavoro del processo Node.js.
Come per nodo js nome doc __dirname
La directory di script corrente come valore stringa. __dirname non è in realtà un globale ma piuttosto locale per ogni modulo.
Mi spiego con l'esempio,
Supponiamo di avere un file main.js
risiede all'interno C:/Project/main.js
e funzionante node main.js
entrambi questi valori ritornano stesso file
o semplicemente con seguente struttura di cartelle
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
supponiamo di avere un altro file script.js
file all'interno di una sottodirectory di progetto cioè C:/Project/lib/script.js
e funzionante node main.js
che richiedono 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
significa che 'process.cwd()' è sinonimo di '.' per tutti i casi tranne per' require() '? –
@AlexanderGonchiy correct, '.' è relativo a' process.cwd() '(anche a questo), ad eccezione di' require() 'che funziona relativamente al file di esecuzione corrente. Vedi [qui] (http://stackoverflow.com/a/16730379/927631) per ulteriori informazioni. – Dwelle