我有一个问题与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文件系统上的/tmp挂载是作为溢出挂载的(通常大小为1MB),这可能是由于您没有指定/tmp作为自己的分区,您的根文件系统被填满,/tmp被重新挂载作为备用。

要解决这个问题,在你清理空间后,只需卸载备份,它应该重新安装在它原来的位置:

sudo umount overflow

其他回答

在我的情况下,在linux上,sudo解决了这个问题。

例子:

sudo gulp dev

重启机器为我解决了问题。我首先尝试清除/tmp/,但节点仍然抱怨。

执行以下命令避免ENOSPC:

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

对于Arch Linux,将这一行添加到/etc/sysctl.d/99-sysctl.conf:

fs.inotify.max_user_watches=524288

然后执行:

sysctl --system

这在重启过程中也会持续。 技术细节来源

如果linux文件系统上的/tmp挂载是作为溢出挂载的(通常大小为1MB),这可能是由于您没有指定/tmp作为自己的分区,您的根文件系统被填满,/tmp被重新挂载作为备用。

要解决这个问题,在你清理空间后,只需卸载备份,它应该重新安装在它原来的位置:

sudo umount overflow

在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