如何查找Error对象内err.code的枚举取值?
Node.js 文件操作中 err.code 的常见取值及查找方法
嘿,这个问题我太熟了,Node.js 文件操作里的错误码可是日常排查问题的必备知识点~
一、文件操作相关的常见 err.code 取值
EEXIST: 文件/目录已存在(就是你代码里判断的那个场景)ENOENT: 指定的文件或目录不存在,大概率是路径写错或者文件被删除了EACCES: 没有足够的权限去读取/写入/执行目标文件,比如尝试修改系统级文件但没加权限EISDIR: 你试图对一个目录执行文件操作,比如用fs.writeFile去写一个文件夹路径ENOTDIR: 你试图对一个文件执行目录操作,比如用fs.readdir去读取一个普通文件EBUSY: 目标文件或设备正被其他进程占用,无法进行操作,比如修改正在被打开的日志文件EROFS: 尝试往只读文件系统里写入内容,比如挂载的光盘或者只读分区EMFILE: 当前进程打开的文件描述符数量超过了系统限制,批量处理大量文件时可能出现ENFILE: 整个系统打开的文件数量达到上限,相对少见,一般是服务器资源耗尽时会碰到
二、如何查找完整的 err.code 枚举值
有几个实用的方法可以获取所有枚举值:
查看 Node.js 内置常量
直接在终端运行这条命令,就能打印出所有系统错误码的完整枚举(包含文件操作及其他系统级错误):node -e "console.log(require('constants').errno)"输出里每个错误码都对应一个数字标识,方便你对照排查。
打印完整 Error 对象
你已经在尝试打印整个 Error 对象了,直接用console.error(err)就能看到完整的错误信息——除了err.code,还有err.message(更易懂的错误描述)、err.stack(调用栈,帮你找到出错的代码位置),部分文件操作错误还会附带err.path(出错的文件路径),这些信息能帮你更快定位问题根源。查阅 Node.js 官方文档
Node.js 官方文档里有专门的「System Errors」章节,里面详细列出了所有标准err.code的取值、对应的错误描述,以及常见的触发场景,是最权威的参考资料。
内容的提问来源于stack exchange,提问作者Amrmsmb
相关产品推荐
相关产品推荐

