Eu recebi esse erro usando o jshint através de um subprocesso python no 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
Isso é causado porque você excluiu ou moveu um diretório para fora dele e o diretório atual não pode ser determinado.
Como saber se você está tendo esse problema:
Execute o comando cd .
(se você receber esse erro, terá esse problema).
el@apollo:~/foo$ cd .
cd: error retrieving current directory: getcwd: cannot access parent
directories: No such file or director
Você tentou alterar o diretório para o diretório atual e não conseguiu.
Como reproduzir o erro:
O jshint é afetado por este erro. Crie um diretório foo
, faça um cd nele, crie um arquivo chamadomyjavascript.js
cd /home/el
mkdir foo
cd foo
touch myjavascript.js
jshint myjavascript.js
O jshint roda corretamente, diz que não há erros, o que está correto.
Abra um segundo terminal e rm -rf
o diretório /home/el/foo
por baixo.
rm -rf /home/el/foo
Execute jshint myjavascript.js
novamente o seu primeiro terminal e você receberá um erro:
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
O diretório se foi! E mesmo que você o substitua pelo mesmo conteúdo, ele possui uma assinatura diferente e o terminal não pode se recuperar, o método getcwd
não pode saber qual é o diretório atual.
Três soluções:
O terminal está confuso sobre qual é o diretório atual porque se foi ou sua assinatura mudou. Siga um destes procedimentos para corrigi-lo:
Execute o comando cd ..
até parar de receber erros. Isso re-sincroniza o terminal com o sistema de arquivos. Em seguida, volte ao seu diretório. Tente novamente. O erro desaparece.
Use su youruser
no terminal, digite a senha. Ele é atualizado e traz você de volta ao mesmo diretório.
Feche e reabra o terminal que limpa as assinaturas de diretório obsoletas. Ou envie um e-mail desagradável para qualquer programa (jshint) ou para milhares de outros programas que não podem tolerar ou se recuperar de assinaturas antigas de diretório.
cd [PATH]
seu shell para ir para um existente.