当所有扩展都被禁用时,是否会出现这个问题?:是的
- VS Code 版本:1.80.2
- OS 版本:macOS 13.4.1
重现步骤:
- 运行以下命令:
mkdir -p scratch/src
mkdir scratch2
dst=$(cd scratch2 && pwd)
ln -s $dst scratch/src/symlink
echo "import { Foo } from './symlink/index'" >scratch/src/test.ts
echo "export const Foo = 1;" >scratch2/index.ts
code --disable-extensions scratch
打开 test.ts
。它应该没有错误。
- 运行
rm -rf scratch2
。在 vscode 检测到更改后,它应该在./symlink/index
下方显示一个红色波浪线,并显示错误 "Cannot find module ..."。 - 运行
mkdir scratch2 && echo "export const Foo = 1;" >scratch2/index.ts
此时预期的行为是,vscode 识别到符号链接的目标目录再次存在,并删除红色波浪线。
实际行为是,波浪线没有消失。您必须关闭并重新打开项目,才能让 vscode 识别代码有效。
5条答案
按热度按时间yuvru6vn1#
这同样适用于符号链接文件:你可以将步骤2替换为
rm scratch2/index.ts
,并在步骤3中重新创建该文件后观察相同的实际行为。在步骤3之后,用波浪线点击文本会打开一个选项卡,显示以下内容:
然而,你仍然可以从资源管理器成功打开
src/symlink/index.ts
。dzhpxtsq2#
我们的文件监视器不支持符号链接后面的工作区中目标的更改。换句话说,出于性能原因,文件监视器不会自动跟踪符号链接。你可以通过查看即使被删除也不会从树中移除符号链接的文件资源管理器来判断这一点。
我们通过
files.watcherInclude
设置有限地支持添加要监视的额外文件夹,但在这个场景下,当我测试时,我没有看到文件夹重新创建时的文件事件。然而,我认为TypeScript在这里正在做一些他们自己的事情,因为他们确实检测到了删除操作,但没有检测到重构操作,所以这可能是TypeScript专门处理的事情。
v2g6jxz63#
是的,我同意这是一个TypeScript问题——我在另一个编辑器(IntelliJ IDEA)中也能复现相同的问题。你是否有能力将这个问题转交给microsoft/typescript仓库?
mwngjboj4#
我们大致上在手表方面有类似的权衡。你可以在不同的手表策略之间切换,并找到最适合你的场景的那一个。
vvppvyoh5#
就我所知,这些选项中没有一个能让这个场景按预期运行。