【发布时间】:2013-02-21 17:37:18
【问题描述】:
突然之间,我的代码无法编译,并且 tsc 抱怨“名称 g 在当前范围内不存在”。这是一个非常有趣的错误:
- 我的代码中没有一个名为“g”的变量、类或接口
- 我没有导入名为“g”的模块
- 文件本身未命名为“g”
这里有一些代码:
export class SpawnMessage implements Message {
tag: UID;
id: number;
}
VisualStudio 用红色在“export”的“e”下划线,并抱怨“没有名称 g”。同样的错误信息散布在我的代码中最奇特的地方。
好吧,我想如果 g 如此重要,我会创建它。我在代码顶部添加了一个名为 g 的变量。错误消息并没有消失,它们只是移动了。例如,现在我的一个 cmets 显然是错误的。真的,如果有人告诉我这件事我不会相信,所以我做了一个截图: ![g 不存在][1]
不仅仅是 VisualStudio,还有 tsc。我重新启动了 IDE 和 shell,但错误仍然存在。自然又换地方了。
出了什么问题?
更新: 我修复了导出导入语句,但这并没有影响错误。 这是 jsfiddle 上的整个文件。代码相当丑陋,请记住这是正在进行的工作。事实上,我只是在错误出现时进行重构,并且从那以后就没有接触过文件。
目前在这三个地方发现错误:
-
Message接口的右花括号 -
SpawnMessage的构造函数最后一行的等号 - 类
Game中方法requestSpawn的return语句前面的一些空格@
更新 2: 我重新启动了 VisualStudio 和命令提示符。错误仍然存在。然后我重新启动计算机,错误仍然存在。你可以看到我很绝望。这就是为什么我把它全部推送到 github,删除我的本地副本并再次克隆 repo。错误消失了。这是完全相同的代码,是完全相同的编译器。它甚至是我驱动器上的相同路径,但 tsc 编译代码。
我不会将其发布为我自己问题的答案,因为它确实令人不满意。如果你们中的一个人能解释这种奇怪的行为,也许这是一个已知的错误,我很乐意接受他的回答。
【问题讨论】:
-
我很惊讶旧的
export import声明没有被捕获-应该突出显示。您正在使用哪个版本的 TS,哪个版本的 WebEssentials 2012(如果有),我们可以看到有问题的整个班级吗? TS 的 alpha 问题之一是它有时会发现错误,但会将其误报为其他错误。 -
当然,你可以看到整个代码。但错误不仅限于一类。每次编辑后我都会改变位置,并且基本上无处不在。我将用整个文件创建一个 jfiddle
-
修复导出导入不能解决问题
-
问题是您没有提供我们可以重新创建的示例 - 所以我们无法帮助您。您需要创建一个最小示例来演示问题,因为只需将一部分代码扔到墙上,由于缺少引用,我们甚至无法编译,这意味着我们无法重新创建您的问题。我为您的示例中所有缺少的代码创建了定义 - 但我没有收到您描述的错误。考虑到这一点,您的问题无法以目前的形式回答。
-
在第一行末尾添加分号是否可以解决您的问题?
标签: javascript node.js compiler-construction web typescript