如何解決在 Windows 用 npm 安裝 TypeScript 之後 tsc 還是舊版的問題
2017-03-29 15:15
393 查看
由於 Angular 2 官方建議採用 TypeScript 做為主要的開發語言,一般來說
TypeScript 都會建議使用 npm 進行安裝,安裝後就可以在命令提示字元下使用 tsc 命令對 *.ts 進行編譯動作。不過這幾年 TypeScript 的變化很快,轉眼都已經到 1.8 版了。雖然透過 npm 安裝 TypeScript 是很容易的一件事,不過對於有安裝過
Visual Studio 的使用者來說,這條路可能會變得異常崎嶇,如果你在用 npm 安裝過 TypeScript 並且輸入 tsc.exe -v 總是顯示 1.0 版 ( 或低於 1.8 版) 的話,這篇文章你可能要繼續看下去。
早期在安裝 Visual Studio 的時候,由於 Microsoft SDKs 內建了 TypeScript 1.0 版,當時的安裝過程中,可能就已經將 tsc.exe 編譯器工具程式的所在路徑 ( C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\ )
設定到 PATH 環境變數了,而且預設還設定在「系統環境變數」下,如下圖示:
當你事後在安裝 Node.js 之後,由於透過 npm 安裝一些套件全域模組時,通常會建立一些批次檔 (*.cmd )
到 %APPDATA%\npm 目錄下,如下圖示:
而這個 npm 全域模組的所在目錄,通常會在安裝 Node.js 的時候,會被自動設定在「使用者環境變數」下,如下圖示:
這樣的環境設定就有點尷尬了,你可以參考下圖,我們在用 npm install -g typescript 安裝好之後,直接輸入 tsc -v 查詢版本,得到的竟然不是 Version
1.8.10 最新版,卻是非常老舊的 Version 1.0.3.0 版本!
我們可以利用我之前介紹過的一個 where 命令查出目前執行的
tsc 程式到底位在哪一個資料夾,你可以看到原來有兩個地方擁有 tsc 程式,一個是 C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\tsc.exe,另一個則是C:\Users\User\AppData\Roaming\npm\tsc.cmd 批次檔,而我們用C:\Users\User\AppData\Roaming\npm\tsc
-v 來執行,就可以執行最新版的 TypeScript 編譯器了。
因為「系統環境變數」的優先權比「使用者環境變數」還高,因此在命令提示字元下執行任意命令時,都會先找「系統環境變數」的 PATH 環境變數中的路徑,然後才會去找「使用者環境變數」的 PATH 環境變數,所以解決方法算是十分簡單,不外乎就是兩種:
直接從「系統環境變數」的 PATH 環境變數刪除 C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\ 路徑即可(因為用不到)。
將 C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\ 路徑從 PATH 系統環境變數中移至 PATH 使用者環境變數中即可,但請注意要設定在C:\Users\User\AppData\Roaming\npm 之後才行。
修改完成並按下「確定」按鈕後,請記得要重新開啟命令提示字元視窗,環境變數才會套用喔!
TypeScript 都會建議使用 npm 進行安裝,安裝後就可以在命令提示字元下使用 tsc 命令對 *.ts 進行編譯動作。不過這幾年 TypeScript 的變化很快,轉眼都已經到 1.8 版了。雖然透過 npm 安裝 TypeScript 是很容易的一件事,不過對於有安裝過
Visual Studio 的使用者來說,這條路可能會變得異常崎嶇,如果你在用 npm 安裝過 TypeScript 並且輸入 tsc.exe -v 總是顯示 1.0 版 ( 或低於 1.8 版) 的話,這篇文章你可能要繼續看下去。
問題說明
早期在安裝 Visual Studio 的時候,由於 Microsoft SDKs 內建了 TypeScript 1.0 版,當時的安裝過程中,可能就已經將 tsc.exe 編譯器工具程式的所在路徑 ( C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\ )設定到 PATH 環境變數了,而且預設還設定在「系統環境變數」下,如下圖示:
當你事後在安裝 Node.js 之後,由於透過 npm 安裝一些套件全域模組時,通常會建立一些批次檔 (*.cmd )
到 %APPDATA%\npm 目錄下,如下圖示:
而這個 npm 全域模組的所在目錄,通常會在安裝 Node.js 的時候,會被自動設定在「使用者環境變數」下,如下圖示:
這樣的環境設定就有點尷尬了,你可以參考下圖,我們在用 npm install -g typescript 安裝好之後,直接輸入 tsc -v 查詢版本,得到的竟然不是 Version
1.8.10 最新版,卻是非常老舊的 Version 1.0.3.0 版本!
我們可以利用我之前介紹過的一個 where 命令查出目前執行的
tsc 程式到底位在哪一個資料夾,你可以看到原來有兩個地方擁有 tsc 程式,一個是 C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\tsc.exe,另一個則是C:\Users\User\AppData\Roaming\npm\tsc.cmd 批次檔,而我們用C:\Users\User\AppData\Roaming\npm\tsc
-v 來執行,就可以執行最新版的 TypeScript 編譯器了。
解決方法
因為「系統環境變數」的優先權比「使用者環境變數」還高,因此在命令提示字元下執行任意命令時,都會先找「系統環境變數」的 PATH 環境變數中的路徑,然後才會去找「使用者環境變數」的 PATH 環境變數,所以解決方法算是十分簡單,不外乎就是兩種:直接從「系統環境變數」的 PATH 環境變數刪除 C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\ 路徑即可(因為用不到)。
將 C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\ 路徑從 PATH 系統環境變數中移至 PATH 使用者環境變數中即可,但請注意要設定在C:\Users\User\AppData\Roaming\npm 之後才行。
修改完成並按下「確定」按鈕後,請記得要重新開啟命令提示字元視窗,環境變數才會套用喔!
相关文章推荐
- 如何解決安裝 Windows XP Service Pack 3 後,Outlook Express 無法啟動的問題
- (轉貼) 如何解決Access Connections在Windows XP開機緩慢的問題? (NB) (ThinkPad) (OS) (Windows)
- 如何避免安裝 SuperCache II 之後, 無法正常開機的問題
- (原創) 如何解決CentOS無法在VMWare內線上更新及安裝其他軟體的問題? (OS) (Linux) (CentOS) (VMWare)
- (轉貼) 如何解決Windows XP開機後停頓的問題? (OS) (Windows)
- (原創) 如何解決Windows Live Writer每次上傳兩張圖片的問題? (Web) (Windows Live Writer)
- 如何在 Windows 7 安裝 SharePoint Server 2010
- (原創) 如何解決目錄改變時,Nios II project無法編譯的問題? (SOC) (Nios II) (DE2-70)
- (原創) 如何解決TRDB-D5M CMOS在DE2 delay的問題? (SOC) (DE2) (TRDB-D5M)
- 如何在 64 位元的 Windows 7 中安裝 PLSQL DEVELOPER 8 和 Oracle 11g x64 Client
- 教您如何解決 Samsung Galaxy S2 無法與 Samsung Kies 同步軟體連線的問題
- (原創) 如何解決DE2範例DE2_CCD_detect左右相反的問題? (IC Design) (DE2) (Quartus II)
- 如何解決在VS中文版應用中無法添加XtraReport 問題
- 黄聪:如何在Windows上安裝BeautifulSoup
- ASP.NET 3.5 如何安裝在windows 2003的IIS 6.0
- windows Vista / 7 不能安裝SQL Server 2008 R2解決方法
- (原創) 如何解決DE2_LCM_CCD上下顛倒左右相反與無法設定曝光值的問題? (SOC) (DE2)
- 转贴:如何在 10.6 Snow Leopard 中利用 BootCamp 安裝 Windows 7
- 如何疑難排解 Windows 2000 列印問題
- (转)如何解決TRDB-D5M CMOS在DE2 delay的問題?