如何在 Windows 10 中搭建 Node.js 環境?
【編者按】本文作者為 Szabolcs Kurdi,主要通過生動的例項介紹如何在 Windows 10 中搭建 Node.js 環境。文章系國內 ITOM 管理平臺 OneAPM 編譯呈現。
在本文中,筆者將展示如何在 Windows 10 中搭建 Node.js 環境。並且,作為檢驗,筆者會在新搭建的環境中執行自己正在努力的一個專案(該專案依賴於 koa, pg, amqplib 等模組)。
請注意:本文的首要目的是為 Node.js 專案搭建開發者環境,而非執行某個專案。筆者隨後會介紹如何部署至 Azure 平臺,但這已經超出了本文的討論範圍。
準備工作
在 Windows 中用 Node.js 進行開發一度是非常麻煩的事,但是現在這一狀況相較於一兩年前有了較大改善。這也是為什麼,在選擇 Windows 7 還是 Windows 10 作為本文主題之時,我們猶豫不決的原因。
儘管 Windows 7 仍舊非常流行,而且 Windows 10 有一些不好的風聞(由於評價標準及資料收集範圍的不同),我們還是決定選擇 Windows 10 為試驗物件,因為確保最新的作業系統對保證應用安全至關重要。
在本文中,我們將盡可能使用最新的工具與應用(並使用其64位版本)。筆者知道在公司環境中這可能無法保證,但保持工具的前衛是很重要的。
本文所有的安裝都會在本機中進行。我不建議在 Cygwin 中搭建 Node 環境。此外,儘管 VirtualBox 是免費的,當我在 Windows 機器上執行 Linux 虛擬機器時,卻總是問題不斷。
步驟1:安裝 Git
首先,安裝 Git。使用預設設定,這些設定是相當合理的。
筆者通常會在主目錄下建立一個專案資料夾。設定時,右鍵單擊該資料夾,選擇 “Git bash here”,再通過git --version
指令檢查 git 版本。
這是很好的 bash 環境,你可以建立一個 .bash_profile
,在你開啟 bash 視窗時執行。此外,這不是 cmd.exe
視窗,你可以檢視一些選項(單擊左上角的圖示)。你可以通過滑鼠中鍵將文字拷貝至視窗(就像在建立的 Linux 終端一樣)。
步驟2:在 Windows 10 上安裝 Node.js
下載並安裝 Node.js。使用其 LTS(長期支援)版本。
筆者不建議並排安裝多個版本,因為 Node 版本管理器並未正式支援 Windows ——不過,你仍有一些備選方案,比如 nvm-windows 或 nodist。其實,即便是在其他系統中,全域性安裝不同版本的 node 工具仍然像是在自找麻煩。
步驟3:更新 npm
npm 伴隨著 Node 而來。成功安裝 Node.js 之後,包管理器 npm 也應當可用了。
開啟一個 bash shell,通過 npm --version
檢查版本號。如果 npm 是 2.x 版本,則應該升級到版本3,這能解決許多問題(對我們而言,最重要的是其處理對等依賴的方式)。在開始選單中搜尋 Power Shell,以管理員身份執行,並遵循以下步驟。
步驟4:安裝 Visual Studio 與 Python
Node 包通常會依賴帶有原生程式碼的包,因此你必須安裝 Visual Studio。
Node-gpy 是圍繞 Python GYP (Generate Your Projects)的一款包裝程式,該工具能為 Gcc, XCode 以及 Visual Studio 生成專案檔案。由於 Windows 開發實際上是通過 Visual Studio 進行的,我們會用其支援 Visual Studio。
安裝 Python(2.x 版本)
如你所見,你會用到 Python,因此下載其64位的 2.x 版本並安裝之。你可以遵循預設設定,並選擇 “Add to path (新增至路徑)”選項。這會將 Python 二進位制新增到全域性路徑,意味著最終你要先登出再登陸。
下一步,進入環境變數設定(在系統,高階設定中),並將 GYP_MSVS_VERSION=2015
新增到全域性變數中,因為下一步是 Visual Studio 2015 的安裝。
安裝 Visual Studio (VS2015)
不同於2012之前的版本,VS2015 能與64位的 Node.js 和諧工作。很快,我們將學習 Node-gyp 針對 Windows 10 的教程。
除非你的機器上已經安裝了完整的 VS,請下載 Visual Studio 2015 社群版,選擇自定義安裝並選定完全的 Visual C++ 分支(不帶 XP 支援),此外,在工具中選擇 Windows SDKs。如果在安裝過程中出現任何差錯,你可以點選程式與特性(Programs and Features),選擇 VS2015,進行更改與修正。
在 gyp 的安裝手冊中還提到了 Windows 7 SDKs,但是我們在前面已經安裝了 Win 8 SDKs,所以希望不會用到 Win 7 SDKs。
步驟5:安裝包依賴
目前,筆者正在開發 Trace 中的告警微服務,所以我會通過 npm -i
指令安裝所需的包依賴。得到的結果如下圖所示:
Fsevents 是可選依賴,且只能用於 OSX 系統;這只是一個警告——其餘模組並無問題。
該微服務用到了 Postgres 與 RabbitMQ,因此筆者也安裝了二者(連同 Erlang)。此處,與 OSX brew(與 apt、Chocolatey 相似的一款包管理器)以及 rocket(一款服務管理器)配置相比,唯一的不同是我必須手動在 15672 埠啟用 web 管理員。
在資料庫端,筆者新增了預設使用者,並建立了一個資料庫。不過,這些都可以在 PgAdmin 客戶端輕鬆完成。
步驟6:處理環境變數
通常,Node.js 專案都高度依賴環境變數。
從上面的專案截圖中可以看到,IS_INTERACTIVE 是一個環境變數(env var),這在 Linux 與 OSX 系統中很容易定義,但是在 Windows 中則有一點不同。
在 package.json 的指令碼部分,你可以使用安裝在本地的 node 模組。筆者建議你儘量避免通過 npm -g
指令全域性地安裝包。
此外,筆者也不建議在 Windows (更精確地說,在跨平臺專案中)的指令碼部分直接新增環境變數,其實,我們有別的選擇。
Npm 會直接將這些指令傳遞至 OS,在本例中,傳遞到 NT 命令直譯器(cmd.exe)。此處,最快捷的解決辦法是將指令碼行拷貝到我們的 bash 視窗,並執行之。但是,理所當然,這不是長遠的解決辦法。最新發布的 Windows bash shell 支援(目前仍處於測試階段)很可能會解決此問題。
最清楚的解決方法是對每一指令碼行使用一條指令(如你所見,我們的 npm run lint
指令執行良好)。
任何依賴於 flashvars (臨時環境變數)或試圖同時完成許多操作的指令,都應該寫在某個 /scripts 資料夾下,作為 Node 可執行的 JavaScript 檔案。
不要使用 bash 指令碼,cmd 無法處理這些指令碼。Cmd.ex 支援 &&
,因此兩三條指令還行,將一整個 shell 指令碼寫做一行就不行了(尤其不應帶有 bash 語言特性)。
為了支援指令碼,這是可行的。但是為了執行我們的應用,就需要許多環境變數。
在 RisingStack,我們在開發階段會使用 nodemon(不過,有些人或許會用 pm2)。Nodemon 是一款檔案監視器,會在開始時根據你定義的環境變數,解析 nodemon.json 檔案。
筆者通常會在 .gitignore_global 檔案(在主目錄下,記得用 git config --global core.excludesfile ~/.gitignore_global
進行初始化)中加入 nodemon.*
,這樣一來,我的專案中便可以有多個 nodemon json 模板。
儘管不是非常優雅的解決方案,筆者通常會全域性地安裝 nodemon。有時,在開發中直接手動啟動 nodemon,而不是通過適當的執行指令碼,更為簡單。
有了上面的 json,現在可以啟動我的微服務了,如下所示:
當然,由於筆者不願監視檔案變化,nodemon 可能不是最佳的僅用於執行指令碼的解決方案。對於那些情況,筆者通常會將 nodemon.json 檔案轉化為 nodemon.sh,將每一個環境變數匯出至後者。請注意:你可以根據自己的喜好隨意命名該檔案,但是不要忘記將其新增至忽略檔案 ——不慎將該檔案推入資源庫會造成很大的麻煩:
export NODE_ENV="development"
export PORT=3060
export AMQP_URI="amqp://localhost:5672/"
export EMAIL_SENDER_NAME="Developer" #etc.
之後,筆者可以在命令列中以其為原始檔(源引nodemon.dev.sh)——這樣做是為了我們當前使用的 MinGW bash,但是,如果將其轉化為傳統的 bat 檔案,會更為簡單。由於我們的資料庫設定需要幾個環境變數,而筆者不願監視之,這是最快也最粗暴的在本地執行的方法。在雲供應商環境中,筆者會更加合理地設定環境變數。
到此為止,專案順利執行了,就如同在 OSX 或 Linux 系統中一樣。
以上即為我們簡短的在 Windows 10 中配置 Node.js 的教程。npm 中的一些模組可能不支援 Windows,但是這一情況正在好轉。Windows 擁有許多美觀友好的 GUI 工具,Visual Studio 也是很強大的武器。如果你的團隊願意承擔額外的開銷,這或許是一個可行的選擇。
OneAPM 能幫助您輕鬆鎖定 Node.js 應用效能瓶頸,通過強大的 Trace 記錄逐層分析,直至鎖定行級問題程式碼。以使用者角度展示系統響應速度,以地域和瀏覽器維度統計使用者使用情況。想閱讀更多技術文章,請訪問 OneAPM 官方部落格。
本文轉自 OneAPM 官方部落格
原文地址:https://blog.risingstack.com/node-js-windows-10-tutorial/
相關文章
- 第二課 如何在WINDOWS環境下搭建以太坊開發環境Windows開發環境
- windows環境下Django環境搭建WindowsDjango
- Flutter環境搭建(Windows)FlutterWindows
- go windows 環境搭建GoWindows
- git windows 環境搭建GitWindows
- Windows中搭建已存在的Octopress環境Windows
- Windows環境下的Nginx環境搭建WindowsNginx
- 在windows環境下基於sublime text3的node.js開發環境搭建WindowsNode.js開發環境
- Windows 10環境簡單搭建ELK叢集Windows
- 在Windows10搭建WebAssembly開發環境WindowsWeb開發環境
- Windows 下搭建 lnmp 環境WindowsLNMP
- Windows下搭建Solr環境WindowsSolr
- windows下搭建lisp環境WindowsLisp
- 如何在Windows、MacOS上搭建Flutter開發環境(詳細篇)WindowsMacFlutter開發環境
- 從零搭建 Node.js 線上環境Node.js
- Object C學習筆記6-如何在Windows環境搭建Object C開發環境Object筆記Windows開發環境
- Windows系統中搭建python開發環境WindowsPython開發環境
- 如何在 Kubernetes 環境中搭建 MySQL(四):使用 StMySql
- Flutter系列(三)——環境搭建(Windows)FlutterWindows
- Windows搭建Superset環境學習Windows
- windows 前端工作環境搭建指北Windows前端
- GOLang開發環境搭建(Windows)Golang開發環境Windows
- Windows 下搭建 Homestead 環境Windows
- 【轉】 Windows下LAMP環境搭建WindowsLAMP
- windows開發genieacs環境搭建Windows
- 十、.net core(.NET 6)搭建ElasticSearch(ES)系列之Java環境搭建和Node.js環境搭建ElasticsearchJavaNode.js
- Django搭建個人部落格:在Windows中搭建開發環境DjangoWindows開發環境
- Windows10 Java Spring boot 開發環境搭建WindowsJavaSpring Boot開發環境
- Windows下搭建ESP-IDF環境搭建Windows
- [譯] Node.js 之戰: 如何在生產環境中除錯錯誤Node.js除錯
- windows下flutter2.2.3環境搭建WindowsFlutter
- React-Native環境搭建(windows)ReactWindows
- Windows 下搭建ios 開發環境WindowsiOS開發環境
- Windows 10 搭建 Laravel Sail 開發環境 (超詳細操作)WindowsLaravelAI開發環境
- Windows10系統下LAMP開發環境的搭建WindowsLAMP開發環境
- windows10用conda搭建tensorflow的gpu環境WindowsGPU
- Windows上搭建Standalone模式的Spark環境Windows模式Spark
- 一、Windows 環境搭建問題彙總Windows