Node.js上传文件遇Unknown system error -122错误如何解决?
解决Node.js上传文件时出现Unknown system error -122的问题
错误信息:
message : "Error: Unknown system error -122: Unknown system error -122, open 'fooBar/file-sample_150kB.pdf'" _status: 500
核对文件路径
确认fooBar/file-sample_150kB.pdf的路径有效性:- 相对路径是基于Node.js进程的工作目录,而非脚本所在目录,可通过
console.log(process.cwd())打印当前工作目录验证 - 路径若包含特殊字符、空格,改用绝对路径或者对特殊字符转义
- 相对路径是基于Node.js进程的工作目录,而非脚本所在目录,可通过
检查文件状态与权限
- 确认
fooBar目录下确实存在file-sample_150kB.pdf文件 - 给Node.js进程赋予文件读取权限:Linux/macOS执行
chmod +r fooBar/file-sample_150kB.pdf,Windows右键文件设置读取权限
- 确认
排查系统层面问题
- 错误码-122对应Linux的
ENOTRECOVERABLE,大概率是系统底层资源异常,尝试重启Node.js进程或服务器 - 检查磁盘剩余空间,避免因磁盘满导致文件读取失败
- 错误码-122对应Linux的
优化文件操作代码
- 上传前先预检查文件可用性,用
fs.access()提前捕获异常:const fs = require('fs').promises; async function checkFileAccessible(path) { try { await fs.access(path, fs.constants.R_OK); return true; } catch (err) { console.error('文件不可访问:', err); return false; } } - 确保文件读取流操作完成后正确关闭,防止资源泄漏
- 上传前先预检查文件可用性,用
内容的提问来源于stack exchange,提问作者Raphaël Balet
相关产品推荐
相关产品推荐

