我刚刚安装了TypeScript作为Node.js软件包,令我惊讶的是它似乎正在直接运行。但我无法找到拦截它可能产生的任何消息的方法。使用具有故意错误的greeter.ts文件执行以下操作
tsc greeter.ts > err.log
确认没有重定向。有人知道这方面的方法吗?我想这样做,所以我可以在编辑器中找到错误。
顺便说一句,我注意到tsc只接受小写文件名。做tsc GREETER.TS给出错误读取文件“GREETER.TS”:找不到文件。
回应Sohnee的评论:不,tsc肯定会发出错误消息,只是我不能重定向它。我的greeter.ts文件,故意错误是:
function greeter(person) {
return "Hello, " + person;
}
var user = "Jane User";
undeclared
document.body.innerHTML = greeter(user);
从OS shell我得到以下内容。
C:\K_F90\F90WX\BOOKS\THENOD~1>tsc greeter.ts
C:/K_F90/F90WX/BOOKS/THENOD~1/greeter.ts(7,0): The name 'undeclared' does not exist in the current scope
但是当我尝试重定向时,我得到:
C:\K_F90\F90WX\BOOKS\THENOD~1>tsc greeter.ts > err.log
C:/K_F90/F90WX/BOOKS/THENOD~1/greeter.ts(7,0): The name 'undeclared' does not exist in the current scope
C:\K_F90\F90WX\BOOKS\THENOD~1>type err.log
C:\K_F90\F90WX\BOOKS\THENOD~1>
我认为非常确凿;正在发出错误消息但未被重定向到err.log,该文件为空。
答案 0 :(得分:4)
>
运算符仅重定向stdout。错误写入stderr。要重定向stderr,请将2>&1
附加到命令。背景信息is here。
答案 1 :(得分:1)
尝试使用:
tsc greeter.ts > err.log 2>&1
这对我有用。