Error: ENOSPC: System limit for number of file watchers r解决办法

背景

linux操作系统上使用vue脚手架写案例的时候,使用指令 yarn dev 不成功,发生 Error: ENOSPC: System limit for number of file watchers错误。
原因:是文件监视程序的系统产生了限制,达到了默认的上限,需要增加限额。

Inotify 是什么?

inotify 是 Linux 内核 2.6.13 (June 18, 2005) 版本新增的一个子系统(API),它提供了一种监控文件系统(基于 inode 的)事件的机制,可以监控文件系统的变化如文件修改、新增、删除等,并可以将相应的事件通知给应用程序。几乎所有的主流 Linux 发行版都支持 Inotify 机制。如何知道你的 Linux 内核是否支持 Inotify 机制呢?很简单,执行下面这条命令:

grep INOTIFY_USER /boot/config-$(uname -r)
CONFIG_INOTIFY_USER=y 

如果输出 CONFIG_INOTIFY_USER=y,代表当前系统支持 Inotify 机制。

可以使用指令 sysctl fs.inotify来查看

sysctl fs.inotify
fs.inotify.max_queued_events = 16384 # inotify 管理的队列的最大长度
fs.inotify.max_user_instances = 128 # 每个用户所能创建的 Inotify 实例的上限
fs.inotify.max_user_watches = 65536 # 每个 Inotify 实例最多能关联几个监控 (watch)

或者

cat /proc/sys/fs/inotify/max_queued_events
16384
cat /proc/sys/fs/inotify/max_user_instances
128
cat /proc/sys/fs/inotify/max_user_watches
65536

解决办法

可以在linux 下修改文件监控数

1.临时限额增加可以设置新的指令:

sudo sysctl fs.inotify.max_user_watches = 524288 
sudo sysctl -p

2.永久增加限额

sudo vim /etc/sysctl.conf
# 在最后面加入
fs.inotify.max_user_watches=524288
# 保存后退出
# 之后运行命令
sudo sysctl -p

或者

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

3.减少 inotify 监控的文件数量

关闭或者减少 inotify 监控的文件。以前端开发为例,如果报错来自 VSCode ,可以关闭再重新打开 VSCode 。

如果是 Webpack 引起的错误, 可以通过在 webpack.config.js 文件中设置 watchOptions 属性,尝试排除node_modules 文件夹。

module.exports = {
  //...
  watchOptions: {
    ignored: /node_modules/,
  },
};

或者重新安装 node_modules

rm -rf node_modules # 删除 node_modules
npm cache clean --force # 强制清理 npm 缓存
pnpm install # 使用 pnpm 重新安装 node_modules
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值