Recibí este error usando jshint a través de un subproceso de python en Ubuntu 12.10 de 64 bits.
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
Se debe a que eliminó o movió un directorio de debajo y no se puede determinar el directorio actual.
Cómo saber si tiene este problema:
Ejecute el comando cd .
(si obtiene este error, entonces tiene este problema).
el@apollo:~/foo$ cd .
cd: error retrieving current directory: getcwd: cannot access parent
directories: No such file or director
Intentó cambiar el directorio a su directorio actual y no pudo.
Cómo reproducir el error:
jshint se ve afectado por este error. Crea un directorio foo
, cd en él, crea un archivo llamadomyjavascript.js
cd /home/el
mkdir foo
cd foo
touch myjavascript.js
jshint myjavascript.js
jshint se ejecuta correctamente, dice que no hay errores, lo cual es correcto.
Abra una segunda terminal y rm -rf
el directorio /home/el/foo
salga por debajo.
rm -rf /home/el/foo
Ejecute jshint myjavascript.js
nuevamente desde su primer terminal y obtendrá un error:
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
¡El directorio se ha ido! E incluso si tuviera que reemplazarlo con el mismo contenido, tiene una firma diferente y el terminal no se puede recuperar, el método getcwd
no puede saber cuál es el directorio actual.
Tres soluciones:
El terminal está confundido acerca de cuál es el directorio actual porque ha desaparecido o su firma ha cambiado. Realice uno de estos para solucionarlo:
Ejecute el comando cd ..
hasta que deje de recibir errores. Esto vuelve a sincronizar el terminal con el sistema de archivos. Luego cd de nuevo en su directorio. Inténtalo de nuevo. El error desaparece.
Use su youruser
en la terminal, ingrese la contraseña. Se actualiza y vuelve al mismo directorio.
Cierre y vuelva a abrir el terminal que elimina las firmas del directorio obsoleto. O envíe un correo desagradable a cualquier programa (jshint) o a los miles de otros programas que no pueden tolerar o recuperarse de firmas de directorio obsoletas.
cd [PATH]
su shell para ir a uno existente.