J'ai eu cette erreur en utilisant jshint via un sous-processus python sur Ubuntu 12.10 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
Cela est dû au fait que vous avez supprimé ou déplacé un répertoire en dessous et que le répertoire actuel ne peut pas être déterminé.
Comment savoir si vous rencontrez ce problème:
Exécutez la commande cd .
(si vous obtenez cette erreur, vous avez ce problème).
el@apollo:~/foo$ cd .
cd: error retrieving current directory: getcwd: cannot access parent
directories: No such file or director
Vous avez essayé de changer de répertoire dans votre répertoire actuel et vous ne l'avez pas pu.
Comment reproduire l'erreur:
jshint est affecté par cette erreur. Créez un répertoire foo
, cd dedans, créez un fichier appelémyjavascript.js
cd /home/el
mkdir foo
cd foo
touch myjavascript.js
jshint myjavascript.js
jshint fonctionne correctement, il indique qu'il n'y a aucune erreur qui est correcte.
Ouvrez un 2ème terminal et rm -rf
le répertoire /home/el/foo
par en dessous.
rm -rf /home/el/foo
Exécutez à jshint myjavascript.js
nouveau depuis votre premier terminal et vous obtenez une erreur:
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
Le répertoire est parti! Et même si vous deviez le remplacer par le même contenu, il a une signature différente et le terminal ne peut pas récupérer, la méthode getcwd
ne peut pas savoir quel est le répertoire actuel.
Trois solutions:
Le terminal est confus quant à ce que le répertoire actuel est parce qu'il a disparu ou que sa signature a changé. Effectuez l'une des opérations suivantes pour le corriger:
Exécutez la commande cd ..
jusqu'à ce que vous ne receviez plus d'erreurs. Cela re synchronise le terminal avec le système de fichiers. Revenez ensuite dans votre répertoire. Réessayer. L'erreur disparaît.
Utilisez su youruser
dans le terminal, entrez le mot de passe. Il rafraîchit et vous ramène au même répertoire.
Fermez et rouvrez le terminal qui vide les signatures de répertoire périmées. Ou envoyez un nastymail à n'importe quel programme (jshint) ou aux milliers d'autres programmes qui ne peuvent pas tolérer ou récupérer des signatures de répertoire périmées.
cd [PATH]
votre shell pour accéder à un shell existant.