因此,如果我在 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
的错误消息配对?
最佳答案
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,所以一切正常。
关于node.js - 为什么 errno 34 和代码 ENOENT 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9253971/