2

突然之间,我的代码无法编译,并且 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 上的整个文件。代码相当丑陋,请记住这是正在进行的工作。事实上,我只是在错误出现时进行重构,并且从那以后就没有触及该文件。

http://jsfiddle.net/JT36W/

现在在这三个地方发现了错误:

  1. Message接口的右花括号
  2. 构造函数最后一行的等号SpawnMessage
  3. requestSpawn类中方法的return语句前面的一些空格Game

更新 2: 我重新启动了 VisualStudio 和命令提示符。错误仍然存​​在。然后我重新启动计算机,错误仍然存​​在。你可以看到我很绝望。这就是为什么我将它全部推送到 github,删除我的本地副本并再次克隆 repo。错误消失了。这是完全相同的代码,是完全相同的编译器。它甚至是我驱动器上的相同路径,但 tsc 编译代码。

我不会将其发布为我自己问题的答案,因为它确实令人不满意。如果你们中的一个人可以解释这种奇怪的行为,也许这是一个已知的错误,我很乐意接受他的回答。

4

1 回答 1

1

我相信我之前遇到过几次这个错误。当它谈论“g”或“b”时,它是在谈论它为您的类维护的内部原型继承链。对我来说,当在代码流中Message在 child 之后定义基类时,会发生此错误或类似情况。SpawnMessage只需先定义基类。

希望能帮助到你。

于 2013-03-17T06:02:00.997 回答