nvm (Node Version Manager)
新電腦安裝 NodeJS 的起手式絕大多數都是推薦裝 nvm,當然也有部分人會選擇用 Volta 等其他 NodeJS 版本管理工具,但個人主要還是用 nvm,nvm 還是太權威了。
nvm 顧名思義就是管理我們環境中的 NodeJS 版本,讓我們可以在同一台電腦上安裝多個版本的 NodeJS,並且可以隨時切換使用哪一個版本的 NodeJS。
安裝 nvm
- Windows 系統的 nvm 點這裡找到最新版本的
nvm-setup.zip。
注意安裝路徑下不能出現中文或空白。
- 安裝完成後,可以執行下列指令以檢測是否安裝成功:
# 確定 nvm 是否正確安裝
nvm version
# 查看nvm上有哪些版本的 Node.js 可以安裝
nvm list available
# 安裝你要的 Node.js 版本
nvm install 14.16.0
# 如果你有其他版本的 Node.js,想用其他版本的,輸入:
nvm use 14.16.0
# 查看 Node.js 是否正確安裝
node -v
NodeJS 的基本操作
說是基礎操作,但就只是介紹一下 NodeJS 的基本使用方式,平常根本不會這麼做 XD
建立終端機 JS 執行環境
打開終端機,輸入 node,即可在終端機執行 JavaScript 的環境。
對,就是這麼簡單,差不多就像是你把網頁打開後再開啟 devtool 的 console 一樣,就是開啟一個 JS 執行環境。
如果要離開,輸入 .exit 或按兩次 ctrl + c 即可 (但我會選擇直接關掉 terminal www)。
建立 NodeJS 伺服器
一般會玩 NodeJS 的多半都是 web developer,我們最需要的就是有個 server 能與瀏覽器溝通。
NodeJs 的 HTTP 模組可以讓我們建立一個簡單的 server,當瀏覽器發出請求時,伺服器就會回應一段訊息給瀏覽器。
其實前端基本用不到啦,看看 Vue、React、Svelte 那些其實都把自己的 server 啟動指令跟配置打包得好好的。
會比較需要知道 NodeJS server 的是用 JS 開發後端的那批人。
想啟動 NodeJS server 可以先撰寫一支 index.js (名字隨便啦,但通常示範都會用 index):
// 載入 HTTP 模組
const http = require('http')
// 定義和伺服器有關的變數
const hostname = 'localhost'
const port = 3000
// 設定回應的 HTTP 狀態碼、內容類型,並把回應的訊息傳送給瀏覽器
const server = http.createServer((req, res) => {
res.statusCode = 200 // 設定回應的 HTTP 狀態碼
res.setHeader('Content-Type', 'text/plain') // 設定回應的內容類型
res.end('This is my first server created in Node.js') // 把回應傳送給瀏覽器
})
// 啟動並監聽伺服器
server.listen(port, hostname, () => {
console.log(`The server is listening on http://${hostname}:${port}`)
})
這樣就完成最基本的 server 設定,只要在 terminal 執行 node index.js 就可以啟動伺服器了,然後在瀏覽器輸入 http://localhost:3000 就可以看到剛剛設定的回應訊息了。
這邊注意 NodeJS 不會去 watch 程式碼變化,所以每次更新程式碼,都會需要先 ctrl + c 停掉伺服器然後重新進入一次才會畫面更新
(Optional) Volta
Volta 是除了 nvm 之外比較知名的另一套管理工具,剛好自己在以前公司有接觸到,所以研究了一番,但其實後來公司還是走回了 nvm XD。
如果本來有先裝 nvm,先按照下列步驟移除使用 nvm 安裝的 Node.js 與 nvm:
nvm list:看曾經使用 nvm 裝過那些版本的 Node.js。nvm uninstall 20.11.0:移除 XX 版本的的 Node.js。nvm root:查看 nvm 安裝的路徑。- 前往該路徑,會有一個
unins***.exe的執行檔,直接執行解安裝。
安裝 Volta
Volta 官網點擊下載安裝檔。
安裝完後執行 volta --version 確認是否安裝成功。
安裝全域預設的 Node.js 版本
Volta 沒有跟 nvm 一樣可以直接看 Node.js 現有推行的版本,所以需自行前往 Node.js 官網查看。
Volta 安裝 NodeJS 的語法跟 nvm 其實大同小異,畢竟只是安裝嘛~
volta install node@20.11.0
# 或是直接安裝最新版
volta install node
最後一樣透過執行 node -v 檢查是否正確安裝 NodeJS。
對個別專案使用不同版本 Node.js
這是以前公司需要我研究 volta 的主要原因。
當時的總工程師需要一個管理工具可以讓各專案使用不同的 NodeJS 版本,然後不用一直去全域切換版本,當時的 survey 結果是 nvm-windows 不支援這個功能,但 volta 支援,所以就決定短暫試用 volta 一陣子。
不過現在真要我說的話,我會建議當初的我去跟總工程師說:要這種需求的話,咱們試試 docker 唄?
所以要在各專案下用 volta 管理 NodeJS 版本的話,步驟如下:
- 在專案路徑下,終端機執行:
volta pin node@18.19.0
package.json中如多出以下欄位,則每次進來此專案 Volta 都會自動幫忙切換 Node.js 版本:
"volta": {
"node": "18.19.0"
}
Volta 的評價當時褒貶不一啦,包括套件的全域安裝,甚至連 pnpm 安裝都可能有問題。
再加上生態圈未如 nvm 那麼成熟,所以當時公司最後走回了 nvm 的懷抱。