node.js - 为什么 errno 34 和代码 ENOENT 不匹配

标签 node.js posix

因此,如果我在 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.hENOENT 应该有代码 2,那么为什么这个错误说 errno 34(errno.h 中的 ERANGE),但将其与来自 ENOENT 的错误消息配对?

最佳答案

node.js 将系统 errno 转换为内部“errnos”(参见 deps/uv/include/uv.huv_translate_sys_error deps/uv/src/unix/error.cdeps/uv/src/win/error.c 用于映射)以实现错误的通用表示- Windows 和 Unix 下的条件。

34 是 ENOENT 的 node.js-errno,所以一切正常。

关于node.js - 为什么 errno 34 和代码 ENOENT 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9253971/

相关文章:

javascript - Express JS - 将后端变量/数据传递给 Angular JS

javascript - 有没有办法在 <script> 标签中运行 Node.js?

PHP 命名信号量?

macos - Delphi - 在 OSX 上获取完整的堆栈跟踪

node.js - 从 Kubernetes NGINX Ingress Controller 公开服务总是返回 502 Bad Gateway

javascript - for循环从redis延迟获取项目

javascript - 在 vorpal Action 期间调用另一个函数

c - 实现 perror() - 问题

linux - 如何在 Linux 中的另一个进程终止时得到通知

unix - 从父进程中分 ionic 进程