Visual studio code VSC无法监视此大型工作区中的文件更改
我刚开始使用VSCode版本1.24.1 加载文件夹后,将显示警告 Visual Studio代码无法监视此大型工作区中的文件更改 在我按照他们的建议检查限制后,使用 我得到8192个文件,而我的项目只有650个文件(其中400个在.git中) 为什么会发生这种情况?这是一个错误还是我遗漏了什么 (增加限制显然不是正确的解决方案。)TL;博士 看起来像个虫子 ----- 看来警告已经过去了 不幸的是,我现在无法重现这个错误,但这里有一些步骤Visual studio code VSC无法监视此大型工作区中的文件更改,visual-studio-code,Visual Studio Code,我刚开始使用VSCode版本1.24.1 加载文件夹后,将显示警告 Visual Studio代码无法监视此大型工作区中的文件更改 在我按照他们的建议检查限制后,使用 我得到8192个文件,而我的项目只有650个文件(其中400个在.git中) 为什么会发生这种情况?这是一个错误还是我遗漏了什么 (增加限制显然不是正确的解决方案。)TL;博士 看起来像个虫子 ----- 看来警告已经过去了 不幸的是,我现在无法重现这个错误,但这里有一些步骤 已安装的Php Intellisense扩展 从li
- 已安装的Php Intellisense扩展
- 从linux终端did
git init
- 已将文件夹添加到工作区中
- 做了一些工作,从命令调色板添加、保存、提交和推送
- 闭合VSC
- 打开VSC->显示警告
htop
中看到有一个进程/usr/share/code
带有长参数,其中包括TypeScript
的一些东西,它使用了100%的1个CPU和大约1G的RAM。然后
- 关闭VSC
- 镇静过程
- 开放式VSC
现在警告不再显示,CPU也在正常使用。我找到的解决方案和它对我的作用是 将这一行添加到
/etc/sysctl.conf
然后运行命令sudosysctl-p
然后转到vscode设置,找到名为settings.json的文件
这句话是怎么说的
"files.watcherExclude": {
"**/.git/objects/**": true,
"**/.git/subtree-cache/**": true,
"**/node_modules/*/**": true
}
您也可以参考此链接,这里是解决方案:
通过编辑/etc/sysctl.conf
并将此行添加到文件末尾,可以将限制增加到最大值:fs.inotify.max_user_watches=524288
然后可以通过运行sudo sysctl-p
加载新值。在我的情况下,我没有足够的权限更改sysctl.conf
,因此我的Ubuntu 18.04 LTS解决方案是:
sudo /bin/su -c "echo 'fs.inotify.max_user_watches=524288' >> /etc/sysctl.conf"
sudo sysctl -p
在我的例子中(PHP使用Composer),我必须将vendor
path排除在监视之外
根据您的情况,您应该排除dependencies文件夹。linux ppl不知道的是,有些ppl像我一样是linux的新手。所以如果你是个笨蛋,这是给你的
打开一个新的终端
cat/proc/sys/fs/inotify/max\u user\u手表
(可能是一个数字8k+)
现在(a)
用于vim
-编辑器
(a) sudo-vim/etc/sysctl.conf
(a) 一直向下添加一个新行:fs.inotify.max\u user\u watches=524288
(确保在命令前面没有
)
(a) 键入:wq代码>并按enter键
或(b)
用于nano
-编辑器(感谢@bradrar)
(b) sudo nano/etc/sysctl.conf
(b) 一直向下添加一个新行:fs.inotify.max\u user\u watches=524288
(确保在命令前面没有
)
(b) 键入ctrl+x,键入y,然后按enter键
类型sudo sysctl-p
再次键入:cat/proc/sys/fs/inotify/max\u user\u watchs
(现在应为500k以上)
(稍后谢谢我。)
帮助我的是为我正在进行的项目创建一个单独的工作区。因此,如果我在/htdocs/project/中处理某个内容,那么我将创建一个工作区,而不是仅仅打开该文件夹。以下设置对我有效(在.vscode/settings.json中),您也可以将它们放在vscode中的用户级/系统级设置,而不是工作区级设置)
默认情况下,.git、node_模块
可能被排除在外,但根据您的工作空间,您可能需要添加其他模块。例如,我的文件系统中有一个指向更高级别目录的软链接(该目录递归地有上千个文件)。类似地,.cache loader
通常有数千个文件
可能有用的注意事项:我花了一些时间才意识到文件.exclude
和文件.watcherExclude
是两种不同的设置
一些理论观点:这里的大多数答案(甚至在官方vscode文档中)都建议将系统观察者限制增加到一个非常大的数字。这在大多数情况下都能正常工作,但是,这就像用锤子代替螺丝刀一样(这是一种蛮力,可能并不总是有效,而且效率不高)。虽然绝对系统限制可以(也许应该)从默认限制提高,但优化您的工作空间并避免使用不必要的系统资源是有益的。您的手表用完并不意味着它的VSCode
VSCode
在从监视中排除目录(在linux上)时肯定存在问题
但是,由于您自己计算了文件,因此本例中的错误消息可能具有误导性,一些其他应用程序已经耗尽了手表
如果您使用的是JavaScript开发,要跟踪有罪的应用程序,您可以使用,有一个解决方法:
只需禁用此内置扩展:TypeScript和JavaScript语言功能
如果您正在编写Javascript,那么这可能会解决这个问题:
您必须访问侧栏扩展菜单:Ctrl+Shift+X。
然后键入:@builtin types
和禁用扩展名:TypeScript和JavaScript语言功能
,如中所述,多根工作区的问题仍然存在
最初的问题是,当VSN代码运行时,npm安装需要两倍的时间来安装依赖项
sudo /bin/su -c "echo 'fs.inotify.max_user_watches=524288' >> /etc/sysctl.conf"
sudo sysctl -p
"files.watcherExclude": {
"**/.git": true,
"**/.DS_Store": true,
"**/node_modules": true,
"**/some-soft-link-to-higher-level-directory-in-my-file-system" : true,
"**/.cache-loader" : true
}