开发工具与排错

React / Node.js 报错 Error: ENOSPC: System limit for number of file watchers reached 终极解法

在 Linux / Ubuntu 系统上运行大型前端项目(如 yarn startnpm run dev、React / Vue / Vite 项目热重载)时,终端常抛出错误:
Error: ENOSPC: System limit for number of file watchers reached, watch '...'
本文解释该报错的底层系统限制并提供永久修复方案。


一、 核心根因:Linux inotify 监听器上限耗尽

现代前端构建工具(Webpack、Vite、Turbopack、Chokidar)利用 Linux 内核的 inotify 机制监控 node_modules 与源码文件的变动以实现 HMR(热模块替换)。Ubuntu/Debian 默认的 max_user_watches 参数较低(通常为 8192),当项目依赖文件数超过此上限时即抛出 ENOSPC


二、 永久增加文件监听器上限(标准解法)

1. 修改系统内核参数配置

在终端执行以下命令,将监听器上限提升至 524288(512K):

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf

2. 立即重新加载内核配置生效

sudo sysctl -p

3. 验证当前生效数值

cat /proc/sys/fs/inotify/max_user_watches
# 输出 524288 即表示配置成功生效

配置后无需重启系统,重新在终端运行 yarn startnpm run dev,热重载服务即可恢复平稳顺畅!