Visual Studio Code:无法监视文件更改。为什么?

5
我经常遇到“Visual Studio Code无法监视此大型工作区的文件更改”的错误,但我无法弄清原因。
Visual Studio Code (Linux): 1.24.1

我的排除设置是:

"files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/.git/subtree-cache/**": true,
    "**/node_modules/*/**": true,
    "**/.svn/**": true,
    "**/dist/**": true,
    "**/dist-prod/**":true
}

项目结构如下:
angular.json
/dist
/dist-prod
/e2e
ngsw-config.json
/node_modules
package.json
package-lock.json
proxy.conf.json
README.md
/src
tsconfig.json
tslint.json
xliffmerge.json
.editorconfig
.gitignore
/.svn

/src 目录下只有 167 个文件和文件夹。我怀疑 node_modules 并没有被正确排除,但我无法确定设置是否正确。

重启 VSC 后问题消失了,但过一会儿后问题又出现了...


1
我也经历过(并且继续经历)这个问题。我已经打开了https://github.com/Microsoft/vscode/issues/59679。 - Jack
不错,Jack干得好 :-) 我用了一种看起来是通用方法的解决办法,但感觉不太对:https://dev59.com/PlUL5IYBdhLWcg3wDkhT#TbWiEYcBWogLw_1b83nV - Jette
我也认为问题在于 node_modules 没有被真正排除。我在安装新模块后收到了警告,而且如果排除 node_modules,我的项目中只有大约 20 个文件。Watcher exclude 设置为默认值,其中包括 **/node_modules/** - Jonas Rosenqvist
1个回答

7
您需要增加限制。请按照以下步骤操作:
  1. 检查当前限制 cat /proc/sys/fs/inotify/max_user_watches
  2. 使用vim编辑器编辑sysctl.conf文件 sudo vim /etc/sysctl.conf
  3. 在底部添加此行 fs.inotify.max_user_watches=524288
  4. 保存 (esc) :wq!
  5. 加载更改 sudo sysctl -p
  6. 再次检查 cat /proc/sys/fs/inotify/max_user_watches

如果计数相同,则执行以下命令

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

更多详情请查看

愉快的编程 :)


2
增加max_user_watches似乎只是处理症状的方法,它并不能治愈潜在的问题。15个月前,当我写下这个问题时,我在想“Watcher Exclude”功能是否有漏洞。我将其配置为排除node_modules和其他应该忽略的文件夹。 显然,在一个只有167个文件的小项目中,不需要增加max_user_watches。当我观察输出时,它似乎遍历了更多的文件...这个漏洞很可能已经被修复了。总有一天我会减少max_user_watches来检查它。 - Jette
默认情况下,几乎所有的东西,如node_modules都被添加到了观察排除列表中。是的,显然我们可以根据您的建议包含更多的项目。我们还可以禁用不需要的扩展。 - Anand Raja
我真的不喜欢这是我能找到的唯一答案。我的项目有3个文件,我实际上想要监视它们,我可以增加max_user_watches,但性能会受到显著影响。我的笔记本电脑已经9年了,它不需要额外的压力 :/ - Mrk Sef

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接