我正在学习GraphQL,并且在GraphQL操作中使用棱镜绑定。当我启动我的Node.js服务器时,我面临这个nodemon错误,它给了我一个由graphql-cli自动生成的模式文件的路径。这个错误是关于什么的?

错误:

Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/media/ rehans -sattar/Development/All projects/GrpahQl/graph-ql-course/graphql-prisma/src/generated


当前回答

我认为这里给出的大多数答案都是正确的,但是使用systemctl命令重新启动我的服务解决了我的问题。检查下面的命令:

sudo systemctl restart systemd-sysctl.service

其他回答

很难知道要增加多少观众。所以,这里有一个实用程序来加倍的观察者的数量:

function get_inode_watcher_count() {
  find /proc/*/fd -user "$USER" -lname anon_inode:inotify -printf '%hinfo/%f\n' 2>/dev/null | 
  xargs cat | 
  grep -c '^inotify'
}

function set_inode_watchers() {
  sudo sysctl -w fs.inotify.max_user_watches="$1"
}

function double_inode_watchers() {
  watcher_count="$(get_inode_watcher_count)"
  set_inode_watchers "$((watcher_count * 2))"

  if test "$1" = "-p" || test "$1" = "--persist"; then
    echo "fs.inotify.max_user_watches = $((watcher_count * 2))" > /etc/sysctl.d/10-user-watches.conf
  fi
}

# Usage
double_inode_watchers
# to make the change persistent
double_inode_watchers --persist

你应该遵循这样的答案:

cjs'

Or:

艾萨克·莫拉的

对于最新的Ubuntu版本,运行sudo sysctl——system重新读取这些设置。

然而,在我的情况下,我对这些配置文件的更改没有被选中,因为我已经在一段时间前调整了这些设置……然后就忘了。我把冲突的配置文件放在了错误的地方。

根据man sysctl。D,这些设置可以放在/etc/sysctl.d/*.conf、/run/sysctl.d/*.conf和/usr/lib/sysctl.d/*.conf中。

在我的例子中,我有两个文件:

/etc/sysctl.d/10-user-watches.conf
/usr/lib/sysctl.d/30-tracker.conf     <<< Older file, with lower limit

由于命名约定,我的旧文件是最后读取的,并具有优先级。

在我的例子中,当我在Linux服务器上执行nodemon命令时,我打开了Visual Studio Code (SSH到服务器)。所以根据Juri Sinitson的回答,我只是关闭Visual Studio Code并再次运行nodemon命令。这很有效。

我的非恶魔命令:

Nodemon server.js通过NPM启动

为了测试更改,我临时将参数的值设置为524288。

sysctl -w fs.inotify.max_user_watches=524288

然后我继续验证:

npm run serve

问题解决了。为了使它永久,你应该尝试在“/etc/sysctl.conf”文件中添加一行,然后重新启动sysctl服务:

cat /etc/sysctl.conf | tail -n 2
fs.inotify.max_user_watches=524288

sudo systemctl restart systemd-sysctl.service

我认为这里给出的大多数答案都是正确的,但是使用systemctl命令重新启动我的服务解决了我的问题。检查下面的命令:

sudo systemctl restart systemd-sysctl.service