我在Ubuntu 12.10 64位上通过python子进程使用jshint遇到此错误。
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
原因是因为您从目录下删除或移出目录而无法确定当前目录。
如何判断您是否遇到此问题:
运行命令cd .
(如果出现此错误,则说明存在此问题)。
el@apollo:~/foo$ cd .
cd: error retrieving current directory: getcwd: cannot access parent
directories: No such file or director
您试图将目录更改为当前目录,但不能。
如何重现错误:
jshint受此错误影响。制作一个目录foo
,cd进入其中,制作一个名为myjavascript.js
cd /home/el
mkdir foo
cd foo
touch myjavascript.js
jshint myjavascript.js
jshint正确运行,它说没有错误,这是正确的。
打开第二个终端,rm -rf
目录/home/el/foo
从下面移出。
rm -rf /home/el/foo
jshint myjavascript.js
从第一个终端再次运行,您将得到一个错误:
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
目录不见了!即使您用相同的内容替换它,它具有不同的签名并且终端无法恢复,该方法getcwd
也无法知道当前目录是什么。
三种解决方案:
终端对当前目录是什么感到困惑,因为当前目录已消失或其签名已更改。请执行以下一项操作来修复它:
运行命令,cd ..
直到停止出现错误。这将终端与文件系统重新同步。然后cd返回您的目录。再试一次。错误消失了。
su youruser
在终端使用中,输入密码。刷新并带您回到同一目录。
关闭并重新打开终端,以清除陈旧的目录签名。或者将讨厌的邮件发送到任何程序(jshint)或无法容忍或从过时的目录签名中恢复的其他数千个程序。
cd [PATH]
您的外壳以转到现有外壳。