Ho riscontrato questo errore usando jshint tramite un sottoprocesso di Python su Ubuntu 12.10 a 64 bit.
node.js:464
var cwd = process.cwd();
^
Error: ENOENT, no such file or directory
at Function.resolveArgv0 (node.js:464:23)
at startup (node.js:51:13)
at node.js:555:3
È causato dal fatto che hai eliminato o spostato una directory da sotto di essa e la directory corrente non può essere determinata.
Come sapere se stai riscontrando questo problema:
Esegui il comando cd .
(Se ricevi questo errore, hai questo problema).
el@apollo:~/foo$ cd .
cd: error retrieving current directory: getcwd: cannot access parent
directories: No such file or director
Hai provato a cambiare directory nella tua directory corrente e non ci sei riuscito.
Come riprodurre l'errore:
jshint è interessato da questo errore. Crea una directory foo
, cd in essa, crea un file chiamatomyjavascript.js
cd /home/el
mkdir foo
cd foo
touch myjavascript.js
jshint myjavascript.js
jshint funziona correttamente, dice che non ci sono errori che sono corretti.
Aprire un secondo terminale e rm -rf
la directory /home/el/foo
fuori da sotto.
rm -rf /home/el/foo
Esegui di jshint myjavascript.js
nuovo dal tuo primo terminale e otterrai un errore:
el@apollo:~/foo$ jshint myjavascript.js
node.js:464
var cwd = process.cwd();
^
Error: ENOENT, no such file or directory
at Function.resolveArgv0 (node.js:464:23)
at startup (node.js:51:13)
at node.js:555:3
La directory è sparita! E anche se dovessi sostituirlo con lo stesso contenuto, ha una firma diversa e il terminale non può recuperare, il metodo getcwd
non può sapere quale sia la directory corrente.
Tre soluzioni:
Il terminale è confuso su quale sia la directory corrente perché è andata o la sua firma è cambiata. Effettuate una di queste operazioni per risolverlo:
Esegui il comando cd ..
fino a quando non smetti di ricevere errori. Questo ri sincronizza il terminale con il filesystem. Quindi cd nella tua directory. Riprova. L'errore scompare.
Utilizzare su youruser
nel terminale, inserire la password. Si aggiorna e ti riporta alla stessa directory.
Chiudere e riaprire il terminale che elimina le firme di directory non aggiornate. Oppure invia un nastymail a qualunque programma (jshint) o alle migliaia di altri programmi che non possono tollerare o recuperare da firme di directory non aggiornate.
cd [PATH]
la shell per passare a una esistente.