Typescript在watch模式下构建时,不会编译新创建的文件或重命名的文件,

7kqas0il  于 6个月前  发布在  TypeScript
关注(0)|答案(5)|浏览(56)

类型声明版本:: $3.9.0-dev.20200322$, $3.8.3$

搜索词: 构建,项目引用,观察模式

代码

  • 在构建和观察模式下运行项目:tsc -b -w -v

  • 将新文件添加到其中一个项目的引用中。新文件未被观察进程检测到,因此未编译

  • 重命名项目中的现有文件。编译失败,错误信息为:File 'filename' not found.

预期行为:

新文件和重命名后的文件都能正确编译

实际行为:

新文件没有被编译。重命名后的文件导致编译失败

f3temu5u

f3temu5u1#

这个不重复你提到的。我们需要详细的步骤来重现问题,以及示例代码,以查看是否有什么东西出错了。

3htmauhk

3htmauhk2#

这个问题已经困扰我们至少两年了;我们等待了这么久,但问题仍未解决。我理解在沙箱中重现可能是非常困难的,但仍然,附上一个屏幕录制,展示这个bug的效果,希望能帮助提示一下发生了什么。
这个问题在VSCode编辑器和tsc --watch中都可以复现(!!!)。也就是说,这不是我们的构建系统(包括许多组件)的产物,它也影响了以noEmit模式运行的纯真VSCode的TS服务器进程。
以下是一个分成三部分的屏幕录制(一个接一个)。
配置:

  1. slapdash-server-ingestion monorepo项目使用单独的tsc --watch进程进行编译,incremental=true
  2. slapdash-server monorepo项目(依赖于前一个)使用tsc --watch进行编译,emitDeclarationOnly=true和incremental=true
    基本上,在视频中,出现在node_modules/slapdash-server-ingestion/dist/.../的文件没有被slapdash-server中的watching tsc捕获(node_modules/slapdash-server-ingestion是一个lerna-symlink指向packages/slapdash-server-ingestion)。
    我在那里做了什么(按时间顺序):
  3. 我运行了几个tsc --watch进程,然后检出一个从Git中获取的新版本,其中包含出现在slapdash-server-ingestion monorepo项目中的新TS文件(dist/.../FactAllAclsOfAssetAre.ts)。
  4. tsc --watch编译了新的文件(FactAllAclsOfAssetAre.ts)到dist/文件夹。但是,在slapdash-server monorepo项目内部(在第一段视频中的slapdash-server/.../FactAllAclsOfAssetAre.test.ts),编译结果(dist/.../FactAllAclsOfAssetAre.d.ts)不可见:例如,VSCode用红色下划线标记该文件为缺失(尽管它存在),而tsc --watch也无法看到该文件。

现在有趣的部分

  1. 重新保存FactAllAclsOfAssetAre.test.ts(不修改它)无济于事。请查看第一段视频底部的按键记录。这在VSCode和编译FactAllAclsOfAssetAre.test.ts的tsc --watch中都不起作用。
  2. 有趣的是,如果我在FactAllAclsOfAssetAre.test.ts中的tsc --watch指令中做一些虚拟更改,然后撤销它(第二段视频),这将帮助VSCode找到该文件(但显然不会让import解脱)。似乎观察过程中有一些缓存没有刷新,即使在文件更改时也不会刷新,唯一会刷新的时候是当特定的tsc --watch语句发生变化时。
  3. 只有当我在FactAllAclsOfAssetAre.test.ts中的tsc --watch语句中做一些虚拟更改并保存它,然后撤销更改并再次保存时,它才会解除对import文件的锁定。
  4. 我必须重复相同的过程(打开一个卡住的文件,对FactAllAclsOfAssetAre.test.ts中的import语句应用一个虚拟更改(不在代码的其他任何部分!确切地说是在那个特定的import语句中!),最终才能完全解除所有文件的锁定(第三段视频))。
j0pj023g

j0pj023g3#

你好!这个帖子有更新吗?看到同样的问题

cigdeys3

cigdeys34#

Same issue, on webstorm. Changing tsconfig.json include/exclude patterns isn't helping. Editing and reverting the import statement is the only workaround so far, but not a fix. Can this be looked at please?

2nbm6dog

2nbm6dog5#

在SvelteKit + Turbo Monorepo设置中遇到了相同的问题。有两种方法可以重现这个问题:

  1. 将文件从一个包移动到另一个包。
  2. 使用大小写更改重命名文件,例如将AakashFile更改为aakashFile
    现在运行localhost,它将永远加载......

相关问题