きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

TypeScriptの1.6.2が入ってるはずなのにtsc --versionが1.0.3.0を返したら

WindowsVisual Studio と node.js の両方の環境でTypeScriptを使おうとすると遭遇するかもしれない話です。

1.6.2 入ってるのはずなのに 1.0.3.0?

普段TypeScriptの開発をVisual Studioで行っています。が、ちょっとした理由でnode.jsのtscコンパイルをしたいことが発生しました。 さっそくnpmでTypeScriptの1.6.2をインストールし、コマンドラインからtsc hoge.tsみたいな感じでコンパイルを実行……したら、エラーとか出て文句言われました。

??

…気を取り直してtsc --versionでバージョン確認したら……なんと「1.0.3.0 」というバージョンが返ってきました。 『んなアホな』と思いnpm ls -g typescriptで確認すると、やはりnpmではちゃんと1.6.2が入っている模様。

f:id:kiyokura:20151013221731p:plain

 

環境変数のpathから削除する

原因はVSのアドオンとして入ってるTypeScriptコンパイラのパスが環境変数で設定されているから……でした。 システム環境変数のpathからC:\Program Files (x86)\Microsoft SDKs\TypeScript\のエントリを削除すればOK。私の環境では1.0と1.4のパスが存在していました。

 

削除後、再度tscのバージョンを確認すると、ちゃんと1.6.2が返ってきました。

f:id:kiyokura:20151013221759p:plain

なおこの環境変数を削除しても、Visual Studioからのコンパイルは特に問題ないと思います*1*2

 

まとめ?

なお、いくつか手元の環境を確認した限りこれは1.4までで、1.5以降はVSのTypeScriptアドオンをインストールしても環境変数に追加しないようです*3。ので、最近入れた人は問題ないかもしれません。

*1:MSBuild…というかcsprojのTypeScriptバージョンで指定したバージョンでSDKs以下のコンパイラを直接見るので

*2:もちろん、pathにC:\Program Files (x86)\Microsoft SDKs\TypeScript\のtscが指定されていることを期待して書いてるなにかがあればそれは微妙なことになるでしょうから注意

*3:私の環境を見る限りという話なので、ひょっとしたら正しくはないかもしれません