Sublimetext2 如何在Sublime Text 2中解析来自TypeScript的错误消息?
我正在尝试为TypeScript设置一个Sublime Text 2构建系统。我已经按照我找到的方向走了。实际上,调用编译器是可行的,但是它不能正确地提取错误消息 下面是我的示例TypeScript程序:Sublimetext2 如何在Sublime Text 2中解析来自TypeScript的错误消息?,sublimetext2,typescript,Sublimetext2,Typescript,我正在尝试为TypeScript设置一个Sublime Text 2构建系统。我已经按照我找到的方向走了。实际上,调用编译器是可行的,但是它不能正确地提取错误消息 下面是我的示例TypeScript程序: function greeter(person: string) { return "Hello, " + person; } var user = "Jane User"; document.body.innerHTML = greeter(us-er); 从命令行编译时,我看到
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):名称“er”不存在
存在于当前范围C:/data/helloworld.ts(5,26):已提供
参数与调用目标的任何签名都不匹配
当我从Sublime Text 2中构建时,我看到以下输出:
C:/Data/helloworld.ts(5,34):[在0.6秒内完成]
我尝试了原始问题中提到的文件_regex的不同变体,都得到了相同的结果。我当前的文件版本如下所示:
{
"selector": "source.ts",
"cmd": ["tsc.cmd", "--target","ES5", "$file"],
"file_regex": "^(.+?)\\(([0-9]+,[0-9]+)\\)\\: (.+)$"
}
当我使用这个版本测试正则表达式时,它正确地匹配了3个部分。然而,升华文本拒绝向我显示实际的错误消息
有人能指出我做错了什么吗
这是非常令人沮丧的,特别是当一个网站甚至显示了一个正确显示错误消息的崇高文本的例子
这是在Windows 7 64位上使用升华文本2.01 64位的。看起来在刷新输出缓冲区之前进程已终止。您可以通过以下方式进行验证:
{
"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上node的一个已知问题:请参阅和。谢谢Markus的提示。我试了你的建议,但结果基本上是一样的。它现在看起来像:“C:/Data/helloworld.ts(5,34):C:\Data>SilentWater 2000已完成等待![在2.7s中完成]”-我不知道下一步要尝试什么:-(您使用的是什么javascript引擎?您可以直接调用它吗?您可以尝试另一个吗?我正在使用nodejs,“node-v”显示“v0.8.14”。这是nodejs.org网站上的官方Windows安装。它似乎也是64位。我还有什么其他选项?它应该可以工作。尝试直接调用它,而不是通过
tsc.cmd
。如果没有任何效果,您可以尝试Windows脚本主机:cscript//NoLogo tsc.js——target ES5 yourfile.ts
谢谢Markus,使用Windows脚本主机修复了该问题。事实证明,这是Windows上节点的已知问题。我更新了您的答案以包含此信息并接受了它。