突然之间,我的代码无法编译,并且 tsc 抱怨“名称 g 在当前范围内不存在”。这是一个非常有趣的错误:
- 我的代码中没有一个名为“g”的变量、类或接口
- 我没有导入名为“g”的模块
- 文件本身未命名为“g”
这是一些代码:
export class SpawnMessage implements Message {
tag: UID;
id: number;
}
VisualStudio 用红色在“export”的“e”下划线,并抱怨“没有名称 g”。同样的错误信息散布在我的代码中最奇特的地方。
好吧,我想如果 g 如此重要,我会创建它。我在代码顶部添加了一个名为 g 的变量。错误消息并没有消失,它们只是移动了。例如,现在我的一条评论显然是错误的。真的,如果有人告诉我这件事我不会相信,所以我做了一个截图:![g不存在][1]
不仅仅是 VisualStudio,还有 tsc。我重新启动了 IDE 和 shell,但错误仍然存在。自然又换了地方。
什么地方出了错 ?
更新:我修复了导出导入语句,但这并没有影响错误。这是 jsfiddle 上的整个文件。代码相当丑陋,请记住这是正在进行的工作。事实上,我只是在错误出现时进行重构,并且从那以后就没有触及该文件。
现在在这三个地方发现了错误:
Message
接口的右花括号- 构造函数最后一行的等号
SpawnMessage
requestSpawn
类中方法的return语句前面的一些空格Game
更新 2: 我重新启动了 VisualStudio 和命令提示符。错误仍然存在。然后我重新启动计算机,错误仍然存在。你可以看到我很绝望。这就是为什么我将它全部推送到 github,删除我的本地副本并再次克隆 repo。错误消失了。这是完全相同的代码,是完全相同的编译器。它甚至是我驱动器上的相同路径,但 tsc 编译代码。
我不会将其发布为我自己问题的答案,因为它确实令人不满意。如果你们中的一个人可以解释这种奇怪的行为,也许这是一个已知的错误,我很乐意接受他的回答。