【发布时间】:2012-02-26 10:36:16
【问题描述】:
我已经处理这个问题很长时间了,因此非常感谢任何帮助。所以,我正在下载一个文件并使用 PhantomJS 和 CasperJS 保存它。让我指出他们不是问题所在。文件下载没有问题。
问题是NodeJS在下载后无法识别或打开文件。我不能 fs.stat、fs.open 等。没有任何作用。
我稍后会分享代码,但这是日志:
Here: bdTcK6hSdownload.csv
[ '2puzZMeLdownload.csv',
'2s5ICbKNdownload.csv',
'bdTcK6hSdownload.csv',
'izIfagwCdownload.csv' ]
fs.js:230
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
Error: ENOENT, no such file or directory './caspertemp/bdTcK6hSdownload.csv'
at Object.openSync (fs.js:230:18)
at Object.processCSV (/Users/Home/dev/node_modules/inviter/index.js:64:29)
at /Users/Home/dev/node_modules/inviter/index.js:36:33
at ChildProcess.exithandler (child_process.js:281:7)
at ChildProcess.emit (events.js:70:17)
at maybeExit (child_process.js:361:16)
at Process.onexit (child_process.js:397:5)
如您所见,我打印出创建的文件名,然后打印目录的内容,然后尝试打开文件。如您所见,bdTcK6hSdownload.csv 存在于目录中,但打开失败。
简单的代码sn-p在这里:
console.log('Here: ' + filename);
filenames = fs.readdirSync('./caspertemp/');
console.log(filenames);
var fd = fs.openSync('./caspertemp/' + filename, 'r');
console.log(fd);
在此之前和之后还有很多事情要做,但这些都不重要,因为这个基本功能失败了。请帮忙!这已经困扰了好几个星期了。
【问题讨论】:
-
嗯。你检查权限了吗?另外,像这样运行 node.js: strace ./node - 这将跟踪所有系统调用,并且您正在寻找一个 open(),检查节点正在使用的路径等。这将告诉您节点进程实际上是什么做。
-
@EdH。对于权限是的。所有文件都具有相同的权限:
-rw-r--r-- 1 Home staff 216102 Feb 3 15:00 bdTcK6hSdownload.csv还值得注意的是,如果我重新启动节点,我可以毫无问题地访问该文件。 -
@EdH.Hmm,由于某种原因,我无法在 strace 模式下运行:mac:dev Home$ strace -fF -o strace.log node app.js -bash: strace: command not found - 不知道我用那个命令做错了什么
-
您运行的是最新版本的节点吗?你检查过问题队列吗? ENOENT 有很多 Windows 问题,尽管现在大多数都已关闭。 github.com/joyent/node/issues/search?q=ENOENT
-
@loganfsmyth 是的,我在 OS X Lion 上运行 Node 0.6.7。我应该把它添加到问题中。
标签: javascript node.js file-io fs