如何解析Sublime Text 2中TypeScript的错误消息?

时间:2012-11-15 16:12:42

标签: sublimetext2 typescript

我正在尝试为TypeScript设置Sublime Text 2构建系统。我按照我找到的指示here。实际上调用编译器是有效的,但它没有正确地获取错误消息。

以下是我的示例TypeScript程序:

function greeter(person: string) {
     return "Hello, " + person;
}
var user = "Jane User";
document.body.innerHTML = greeter(us-er);

当我从命令行编译时,我看到以下输出:

  

C:/data/helloworld.ts(5,34):'us'这个名字在   当前范围C:/data/helloworld.ts(5,37):名称'呃'没有   存在于当前范围C:/data/helloworld.ts(5,26):提供   参数与调用目标的任何签名

都不匹配

当我在Sublime Text 2中构建时,我看到以下输出:

  

C:/Data/helloworld.ts(5,34):[以0.6秒完成]

我已尝试过file_regex的不同变体,如原始问题中所述,都具有相同的结果。我当前的文件版本如下:

{
    "selector": "source.ts",
    "cmd": ["tsc.cmd", "--target","ES5", "$file"],
    "file_regex": "^(.+?)\\(([0-9]+,[0-9]+)\\)\\: (.+)$"
}

当我使用Python Regex Tool测试正则表达式时,此版本正确匹配3个部分。但是,Sublime Text拒绝向我显示实际的错误消息。

有人能指出我做错了吗?

这非常令人沮丧,特别是因为一个站点甚至显示了Sublime Text正确显示错误消息的示例。

这是在Windows 7 64位上使用Sublime Text 2.01 64位。

1 个答案:

答案 0 :(得分:1)

看起来该过程在刷新输出缓冲区之前终止。您可以通过以下方式验证:

{
    "selector": "source.ts",
    "cmd": ["tsc.cmd", "--target","ES5", "$file"],
    "file_regex": "(.*)"
}

你仍然应该只得到像

这样的东西
C:/Data/helloworld.ts(5,34): [Finished in 0.6s]

要解决此问题,您可以尝试将一些延迟放入批处理文件tsc.cmd中:

@echo off
:: Run the compiler
node "C:\typescript\tsc.js" %*

:: Waits for 500ms
ping 1.1.1.1 -n 1 -w 500

修改 请参阅Markus关于使用Windows脚本宿主而不是节点的评论。这解决了这个问题。进一步的研究表明,这实际上是Windows上节点的一个已知问题:请参阅herehere