我有一个问题与Node.js和上传文件到服务器。为了上传文件到服务器,我使用这个插件。当开始向服务器上传文件时,Node.js进程崩溃并显示错误:
错误:ENOSPC。
服务器代码无法运行。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.9G 4.1G 3.5G 55% /
udev 288M 8.0K 288M 1% /dev
tmpfs 119M 168K 118M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 296M 0 296M 0% /run/shm
/dev/xvdf 9.9G 3.0G 6.5G 32% /vol
overflow 1.0M 1.0M 0 100% /tmp
在Linux上,这可能是对文件监视数量的限制。
开发服务器使用inotify实现热重载。inotify API允许开发服务器监视文件,并在文件更改时收到通知。
默认的inotify文件监视限制因发行版而异(Fedora上为8192)。开发服务器的需求经常超过这个限制。
最好的方法是尝试暂时增加文件监视限制,然后如果您满意的话,将其作为永久配置更改。但是请注意,这会改变整个系统的配置,而不仅仅是节点。
要查看您的当前限制:
sysctl fs.inotify.max_user_watches
临时设定一个新的限制:
# this limit will revert after reset
sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl -p
# now restart the server and see if it works
设定永久的限制:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
如果你使用VS Code,那么它应该无法在大的工作区错误。
"Visual Studio Code is unable to watch for file changes in this large workspace" (error ENOSPC)
这表明VS Code文件监控器正在耗尽句柄,因为工作区很大,包含很多文件。可以通过运行以下命令查看当前限制:
cat /proc/sys/fs/inotify/max_user_watches
可以通过编辑/etc/sysctl.conf并在文件末尾添加以下行来增加限制:
fs.inotify.max_user_watches=524288
然后可以通过运行sudo sysctl -p来加载新值。
注意:524288是监视文件的最大值。虽然你可以看任何文件,但也建议只看这个限制。