Node.js:什么是ENOSPC错误以及如何解决?

我在使用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
西里前端Tom2020/03/18 16:47:17

就我而言,在Linux上,sudoing解决了该问题。

例:

sudo gulp dev
TomProSam2020/03/18 16:47:17

如果您在尝试运行ember server命令时遇到此错误,请找到rm -rf tmp目录。然后ember s再次运行它帮助了我。

L前端2020/03/18 16:47:17

这听起来很奇怪,但是是的,系统重新启动或killall node为我解决了问题。

武藏神离2020/03/18 16:47:17

我遇到了相同的错误。当我运行Reactjs应用程序时。我要做的只是删除node_modules文件夹,然后再次键入并安装node_modules。这样可以消除错误。

西里神乐2020/03/18 16:47:17

对我来说,我已经达到了用户可以拥有的最大文件数量

检查您的电话号码,quota -s并确保文件下的电话号码与配额不太接近

猴子Davaid神乐2020/03/18 16:47:17

在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
西里Davaid2020/03/18 16:47:17

在Ubuntu 18.04上,我尝试了一种技巧,该技巧用于重新激活ionic / node监视的文件,并且在这里也可以使用。这对于那些无法访问系统conf文件的用户很有用。

CHOKIDAR_USEPOLLING=1 npm start
Mandy梅Davaid2020/03/18 16:47:17

无法对此表示赞赏,但@grenade指出这npm dedupe将解决原因(文件过多),而不是症状。

来源:Grunt观看错误-等待中…致命错误:观看ENOSPC

十三神无2020/03/18 16:47:17

重新启动计算机可以为我解决问题。我首先尝试擦拭,/tmp/但节点仍在抱怨。

StafanPro小哥2020/03/18 16:47:17

解决我的问题的一种简单方法是:

npm cache clear

npm或它所控制的进程正在监视太多文件。在构建节点上更新max_user_watches可以永久修复它。对于debian,请在终端上输入以下内容:

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

如果您想知道如何增加inotify观察者的数量,只需单击链接。

村村Pro2020/03/18 16:47:17

运行以下命令以避免使用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

这也将在重新启动后持续存在。 技术细节来源