我遇到Node.js问题并将文件上传到服务器。要将文件上传到服务器,请使用此plugin。当开始上传到服务器的文件时,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
答案 0 :(得分:1071)
运行以下命令以避免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
这也将在重新启动后持续存在。 Technical Details Source
答案 1 :(得分:64)
ENOSPC
表示驱动器上没有空间。
也许/tmp
已满?您可以通过设置npm
来配置npm config set tmp /path/to/some/other/dir
以使用其他临时文件夹,也可以删除/tmp
文件夹中的所有内容。
来源:npm 1.1.21 cannot write, ENOSPC在npm的github回购中。
注意我按照上面描述的方式解决了我的问题。但是,请参阅下面的Murali Krishna's answer,这是更全面的。
答案 2 :(得分:18)
不能归功于此,但@grenade指出npm dedupe
将解决原因(文件太多)而不是症状。
答案 3 :(得分:7)
重新启动机器解决了我的问题。我首先尝试擦除/tmp/
,但节点仍在抱怨。
答案 4 :(得分:5)
解决我的问题的一种简单方法是:
npm cache clear
npm 或它控制的进程正在监视太多文件。在构建节点上更新max_user_watches可以永久修复它。对于debian,请在终端上输入以下内容:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
如果您想知道如何Increase the amount of inotify watchers仅单击链接。
答案 5 :(得分:5)
在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
答案 6 :(得分:4)
如果您使用的是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是观看文件的最大值。尽管您可以观看任何文件,但建议您仅观看不超过该限制的文件。
答案 7 :(得分:1)
如果linux文件系统上的/tmp
挂载被挂载为溢出(通常大小为1MB),这可能是由于您未将/tmp
指定为其自己的分区并且您的根文件系统已填满且/tmp
被重新安排为后备。
要在清除空间后修复此问题,只需卸下后备,它应该重新安装在原始位置:
sudo umount overflow
答案 8 :(得分:1)
我解决了我的问题,导致所有跟踪器控制进程被终止(如果你使用GDM,你可以试试,如果脚本在服务器上运行,显然不是你的情况)
tracker-control -r
我的设置:Arch with GNOME 3
答案 9 :(得分:0)
对我来说,我已经达到了用户可以拥有的最大文件数
使用quota -s
检查您的号码,并确保文件下的号码不会太接近配额
答案 10 :(得分:0)
如果在尝试运行rm -rf tmp
命令期间遇到此错误,请ember s
目录。然后再次运行handleChange
。它帮助了我。
答案 11 :(得分:0)
在Ubuntu 18.04上,我尝试了一种技巧,该技巧用于重新激活ionic / node监视的文件,并且在这里也可以使用。这对于那些无法访问系统conf文件的人很有用。
CHOKIDAR_USEPOLLING=1 npm start
答案 12 :(得分:0)
这听起来很奇怪,但是是的,系统重新启动或killall node
为我解决了这个问题。
答案 13 :(得分:0)
这表明VS Code文件监视程序用完了句柄,因为工作空间很大并且包含许多文件。手表的最大限制已达到,您可以通过运行以下命令查看限制:
cat /proc/sys/fs/inotify/max_user_watches
运行以下代码可解决此问题:
fs.inotify.max_user_watches=524288
答案 14 :(得分:-3)
我遇到了相同的错误。当我运行Reactjs应用程序时。我要做的只是删除node_modules文件夹,然后键入并再次安装node_modules。这样可以消除错误。
答案 15 :(得分:-13)
就我而言,在linux上,sudoing解决了这个问题。
示例:
sudo gulp dev