我正在尝试为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位。
答案 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上节点的一个已知问题:请参阅here和here。