VSCode 1.74.X 版本遇到的依赖跳转不刷新的问题(你可能已经或马上遇到了)

1,147 阅读3分钟

❗注意~ 我建议你先看一下你的VSCode版本是多少?

如果大于等于 1.74.x,那么非常建议你看下去哈,如果不是,也稍微建议你看一下~

为什么呢?

我们先看一个效果哈

异常演示.gif

可以看到,当我们摁着Command(Ctrl)Click进入三方依赖的时候,左侧的文件树并不会定位到目标文件了!

正常情况应该如下:

正常演示.gif

这无疑是一件非非非常糟糕的事情,因为很多时候,我们需要看到左侧的文件结构,并做一些其他的事情。

现在,没了!怎么办?!

经过一系列的排查,甚至还去debugvscode的源码(相当头疼),最终定位到了一个判断语句!

image.png

截图是1.74版本的代码,和1.72版本的代码做了对比,发现多了这么一个if判断:

大概的意思好像是“是否应该自动显示项目”...

继续深入这个方法:

image.png

可以看到shouldAutoRevealItem上面的注释好像说去match一个值

搜索了一下之后,看到了一个之前忽略的Release Notes

image.png

简单机器翻译一下:

“通过引入一个新的设置 Explorer.autoReveaExcluse,已经修复了 #87956(“允许为每个特定文件夹设置 Explorer.autoReveae”)的问题。如果启用了自动显示功能,这个设置允许您配置在资源管理器中自动显示哪些文件。AutoReveaExcluse 设置使用通配符模式排除文件,类似于 files.excue,还支持通过 when 子句进行兄弟匹配。”

其中默认将node_modules文件夹的匹配语句加了进去,即默认会将node_modules文件夹内的内容加入一个黑名单,在黑名单内的文件,在编辑器打开的时候,左侧的树状菜单就不会自动定位到目标文件

找到问题了!

OK,既然找到了问题(其实也不是问题,而是一个新增配置项),我们就按需修改一下就行了:

我这里把**/node_modules这一项给删除了,如下图:

image.png

然后,它就好了!!!

正常演示.gif

一些题外话

那么这个问题是怎么💣出来的呢?

起因是我正在维护一个VSCode插件:Fe-jump:一款辅助前端工程文件跳转的vscode插件

它非常好用!它可以让你非常方便的点击package.json里的依赖名称之后,就帮你跳转到对应的依赖项的源文件,但是前段时间,它忽然不好使了,我甚至还收到了一个issue

image.png

原来我还以为是VSCodebug导致的无法刷新文件树,就连夜想了很多方案先fix掉了这个问题,修复的commit可以看这里:github.com/xicunyang/f…

当自己空下来的时候还是想定位一下这个问题,为什么之前可以,现在就不可以了呢?难道真的是VSCodebug嘛?理论上不应该呀...

所以经过不断的debug VSCode的源码,加上询问ChatGPT,最终定位到了上面的if判断位置

image.png

最后才发现其实是VSCode的新增配置项导致的,哈哈哈。

过程很辛苦,结果很舒服~

以后还是要记得常看看VSCodeRelease Notes才可以啊~

最后,可以装一下试试看! Fe-jump:一款辅助前端工程文件跳转的vscode插件