2

TypeScript用のSublimeText2ビルドシステムをセットアップしようとしています。私はここで見つけた指示に従いました。実際にはコンパイラへの呼び出しは機能しますが、エラーメッセージを正しく取得しません。

これが私のサンプル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):名前「er」は存在しません現在のスコープ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つの部分に正しく一致します。ただし、SublimeTextは実際のエラーメッセージを表示することを拒否します。

誰かが私が間違っていることを指摘できますか?

特に、あるサイトがエラーメッセージを正しく表示するSublime Textの例を示しているので、それは非常に苛立たしいことです。

これは、Windows764ビット上のSublimeText2.0164ビットを使用した場合です。

4

1 に答える 1

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

編集: ノードの代わりに Windows Script Host を使用することに関する Markus のコメントを参照してください。これで問題は解決しました。さらなる調査により、これは実際には Windows 上のノードの既知の問題であることが示唆されています。こちらこちらを参照してください。

于 2012-11-15T18:28:31.887 に答える