因此,如果我在OS X 10.6.8上的node.js v0.6.7中使用虚假路径运行此简单调用,则会出现错误,如预期的那样。
var fs = require("fs");
fs.stat("/tmp/foo", function(error, stat) {
return console.log(error);
});
打印此输出:
{ [Error: ENOENT, no such file or directory '/tmp/foo'] errno: 34, code: 'ENOENT', path: '/tmp/foo' }
我的问题是,根据/usr/include/sys/errno.h
在我的系统上,ENOENT
应该有代码2,那么为什么这个错误说errno 34
(errno.h中的ERANGE),但是配对它带有来自ENOENT
的错误消息?
答案 0 :(得分:8)
node.js将系统errno
转换为内部“errnos”(请参阅deps/uv/include/uv.h
中的uv_translate_sys_error
和deps/uv/src/unix/error.c
或deps/uv/src/win/error.c
以获取映射)在Windows和Unix下实现错误条件的通用表示。
34是ENOENT
的node.js-errno,所以一切都很好。
答案 1 :(得分:4)
似乎node.js用0.12.0改变了errno
。 ENOENT
现在是-2
。
因此,最好检查code === 'ENOENT'
答案 2 :(得分:-2)
因为你尚未创建文件夹/ tmp / foo而且它正在寻找该文件夹 (当我向我的代码添加了一些错误处理行时,控制台吐出相同的错误代码,这是因为我还没有创建我告诉它保存我的图像的目录)