這個章節要來探討nvm這個工具
在我安裝Nest的時候,突然發現我兩年前開發專案用的 Node.js 14已經太舊了
用14版會噴出很多錯誤訊息
但工作的專案版本因為套件有相依的問題,不能輕易直接升版,建置會跑錯誤訊息
想要更輕鬆的切換node版本!多啦O夢快救救我!
要在電腦中隨意切換 Node.js 版本,你可以使用一個稱為 nvm (Node Version Manager) 的工具。這是一個方便的工具,可以讓你在不同版本的 Node.js 之間輕鬆切換。
以下是使用 nvm 的步驟:
安裝 nvm:
首先,你需要在你的電腦上安裝 nvm。你可以打開終端機並執行以下指令:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
或者,你也可以使用 wget 進行安裝:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
安裝完成後,重新開啟一個終端機窗口。
安裝 Node.js:
安裝完 nvm 後,你可以使用以下指令安裝你所需的 Node.js 版本:
nvm install 版本號
例如,如果你想要安裝 Node.js 的 LTS 版本,可以執行:
nvm install --lts
切換 Node.js 版本:
安裝完多個版本後,你可以隨時切換到所需的版本:
nvm use 版本號
例如:
nvm use 14.17.6
這將使你的系統在需要時使用特定版本的 Node.js。
透過這個方式,你可以輕鬆地在不同的專案中使用不同版本的 Node.js,而不必全局更改安裝的版本。
OK!
ChatGPT跟我們介紹nvm這個工具
開始安裝之前先看一下介紹,了解一下這個工具
當然,讓我們針對 nvm(Node Version Manager)的概念和功能提供一個完整的介紹。
概念:
nvm 是一個用於管理 Node.js 版本的工具。它允許你在同一台電腦上同時安裝和管理多個 Node.js 版本,並輕鬆切換它們以滿足不同專案的需求。這對於開發人員來說非常有用,因為不同的專案可能需要不同版本的 Node.js,或者你可能需要測試你的應用程序在不同版本下的運行情況。
功能:
- 安裝不同版本的 Node.js:nvm 允許你從 Node.js 的官方存儲庫中安裝不同版本的 Node.js。你可以輕鬆地安裝最新的 LTS 版本、最新的穩定版或特定版本的 Node.js。
- 切換 Node.js 版本:使用 nvm,你可以隨時切換正在使用的 Node.js 版本。這可以通過運行
nvm use
命令來實現,並且你的系統將在需要時切換到指定版本。- 管理全局和專案範圍的 Node.js 版本:nvm 允許你設置全局的 Node.js 版本,這將影響你整個系統的默認 Node.js 版本。此外,你還可以在每個專案的根目錄中創建一個
.nvmrc
文件,以指定該專案所需的 Node.js 版本。當你進入專案目錄時,nvm 將自動切換到正確的版本。- 自動切換版本:當你進入專案目錄時,nvm 可以自動檢測
.nvmrc
文件,並切換到所需的 Node.js 版本。這使得在不同專案之間切換版本變得非常方便。- 管理全局和專案範圍的 npm 套件:除了管理 Node.js 版本外,nvm 還允許你管理全局和專案範圍的 npm 套件。這意味著你可以為每個專案保持獨立的 npm 套件,而不會影響其他專案。
總之,nvm 是一個強大的工具,特別適合前端和後端開發人員,因為他們可能需要在不同的專案中使用不同版本的 Node.js,並確保一致性和方便性。這讓你能夠更有效地管理你的 Node.js 開發環境。
了解完畢就可以來再看一下安裝教學
事情是這樣的,不同的作業系統安裝方式有一點不同
而且直接照著ChatGPT一開始說的方式安裝
只會得到「'nvm' 不是內部或外部命令、可執行的程式或批次檔。」
或是「nvm: command not found」
好的,我將為你提供在 Windows 和 macOS 上安裝 nvm 的詳細步驟。
在 Windows 上安裝 nvm:
下載 nvm-installer:
前往 nvm 的 GitHub 存儲庫 nvm-windows 下載最新版本的 nvm-installer(
nvm-setup.zip
)。執行 nvm-installer:
解壓縮下載的 zip 檔案,然後執行
nvm-setup.exe
安裝程序。按照安裝程序指示:
遵循安裝程序的提示進行安裝。你可以接受所有默認設置,除非你有特定的需求。
確認 nvm 安裝:
安裝完成後,打開一個新的終端窗口,輸入以下指令來確認 nvm 是否成功安裝:
nvm --version
如果成功安裝,它會顯示 nvm 的版本號。
在 macOS 上安裝 nvm:
使用 Homebrew 安裝 nvm:
開啟終端機並執行以下指令來使用 Homebrew 安裝 nvm:
brew install nvm
配置終端機文件(例如:.bash_profile 或 .zshrc):
在終端機中打開你的配置文件,這可以是
.bash_profile
或.zshrc
,取決於你使用的終端機。nano ~/.bash_profile
或者
nano ~/.zshrc
在文件的底部添加以下行,然後按下
Ctrl + X
保存並退出。export NVM_DIR="$HOME/.nvm" [ -s "$(brew --prefix nvm)/nvm.sh" ] && . "$(brew --prefix nvm)/nvm.sh"
重新加載配置文件:
返回終端機,執行以下指令來重新加載你的配置文件:
source ~/.bash_profile
或者
source ~/.zshrc
確認 nvm 安裝:
輸入以下指令來確認 nvm 是否成功安裝:
nvm --version
如果成功安裝,它會顯示 nvm 的版本號。
現在你已經在你的系統上成功安裝了 nvm,你可以開始使用它來管理你的 Node.js 版本了。如果你需要安裝特定版本的 Node.js,可以使用
nvm install 版本號
命令,然後使用nvm use 版本號
來切換版本。
好,我覺得ChatGPT連nano的使用方式都有提到蠻友善的
那接下來來了解NVM的詳細使用教學
當然,我會提供一些常用的 nvm 指令,這些指令可以幫助你有效地管理你的 Node.js 版本。請注意,這些指令將以台灣用語和繁體中文提供。
安裝特定版本的 Node.js:
nvm install 版本號
例如,如果你想安裝 Node.js 的 LTS 版本(長期支持版本),可以使用:
nvm install --lts
列出所有已安裝的 Node.js 版本:
nvm ls
這會顯示所有你在系統上安裝的 Node.js 版本。
切換到特定版本的 Node.js:
nvm use 版本號
例如:
nvm use 14.17.6
這將使你的系統在需要時使用特定版本的 Node.js。
設定預設的 Node.js 版本:
nvm alias default 版本號
這將設置一個預設的 Node.js 版本,當你開啟新的終端窗口時將會使用它。
查看當前使用的 Node.js 版本:
nvm current
這會顯示當前正在使用的 Node.js 版本。
卸載特定版本的 Node.js:
nvm uninstall 版本號
這會刪除你指定的 Node.js 版本。
查看可用的 Node.js 版本:
nvm ls-remote
這會列出所有可用的 Node.js 版本。
更新 nvm:
nvm install --latest-npm
這將安裝最新版本的 npm(Node 包管理器)。
更新 nvm 本身:
nvm upgrade
這會升級 nvm 到最新版本。
列出所有可用的 nvm 指令:
nvm help
這會顯示所有可用的 nvm 指令及其說明。
這些指令將幫助你在不同專案之間輕鬆地管理和切換 Node.js 版本。如果你需要更詳細的幫助,可以使用
nvm help
來查看 nvm 的說明文檔。
每次都比貪心還要更貪心
當然,除了基本的使用,你也可以探索一些進階的 nvm 功能,以更有效地管理你的 Node.js 環境。以下是一些進階使用 nvm 的示例:
使用 .nvmrc 文件:
在你的專案目錄中,你可以創建一個名為
.nvmrc
的文件,其中包含所需的 Node.js 版本號。當你進入該專案目錄時,nvm 會自動切換到指定的版本。例如,創建一個.nvmrc
文件並添加以下內容:14.17.6
當你進入專案目錄時,執行
nvm use
將自動切換到 Node.js 14.17.6。使用多個 .nvmrc 文件:
如果你的專案有不同的部分需要不同版本的 Node.js,你可以在不同的子目錄中創建不同的
.nvmrc
文件。這樣,你可以根據專案的部分選擇不同的 Node.js 版本。使用 nvm 別名:
你可以為不同版本的 Node.js 創建別名,以簡化版本切換。例如,你可以創建一個名為 "default" 的別名,讓它指向你喜歡的 Node.js 版本:
nvm alias default 14.17.6
現在,當你運行
nvm use default
時,它將自動切換到 14.17.6 版本。使用 nvm 的套件管理功能:
nvm 還具有用於管理全局和專案範圍 npm 套件的功能。你可以使用
nvm use 版本號
來切換到特定版本的 Node.js,然後在專案中運行npm install
以安裝該版本下所需的套件。這樣可以確保專案的 npm 套件版本與所選 Node.js 版本兼容。導入和導出版本號:
nvm 允許你將版本號導入和導出到文件。例如,你可以將目前的版本號導出到文件:
nvm list > versions.txt
然後,你可以在另一個地方導入這些版本號:
nvm install $(cat versions.txt)
這對於在不同計算機上保持一致的 Node.js 版本非常有用。
這些進階使用方式可以幫助你更靈活地管理 Node.js 版本,特別是在擁有多個專案,每個專案需要不同版本的情況下。請根據你的需求來選擇適合的功能。
nvm是用來切換與管理版本的
一開始也提到,我是因為遇到了版本問題無法安裝nestJS,所以開始尋求版本管理的工具
NodeJS的版本到底影響了什麼,其版本又為什麼過個兩三年就被視為「過舊」
我們來好好了解一下
Node.js 的不同版本會包含以下種類的差異:
新特性和改進:
每個新版本通常會引入新的特性、功能和改進。這可能包括新的 JavaScript 語言功能、API 的新增或變更、效能優化,甚至是全新的模組。
效能提升:
隨著 Node.js 版本的升級,通常會帶來效能的提升。這可能是由於運行時的優化、V8 引擎的更新或其他相關的改進。
安全性改進:
新版本通常會修補先前版本中的安全漏洞,這使得升級到最新版本尤其重要以保護你的應用程式。
穩定性和可靠性:
隨著版本的更新,Node.js 也會變得更加穩定和可靠。這包括修復先前版本中的錯誤和問題。
API 變更:
有時,新版本可能會引入對 API 的變更。這可能會影響到使用特定模組或函數的代碼。
第三方套件和模組的相容性:
一些第三方套件或模組可能會依賴於特定的 Node.js 版本。因此,升級 Node.js 時,你需要確保你的依賴項也能與新版本兼容。
Node.js 的 LTS 版本:
LTS(長期支持)版本會提供長達 30 個月的支持,包括安全性和錯誤修復。這使得它成為生產環境中的首選版本。
總的來說,升級到最新版本的 Node.js 通常是一個好主意,因為它會帶來許多新的特性、效能提升和安全性改進。但在進行升級之前,請確保測試你的應用程式以確保它在新版本中運行正常。如果你的應用程式依賴於特定版本的 Node.js,則需要考慮相關的相容性問題。
LTS(長期支援)是 Node.js 的一個版本分支,其主要目的是提供長期的穩定性和安全性支持。以下是有關 LTS 的詳細說明以及在不再得到支援之後可能發生的情況:
LTS(長期支援)的重要性:
- 長期穩定性:LTS 版本被設計為提供長時間的穩定性,這使得它成為生產環境中首選的版本。
- 安全性和錯誤修復:LTS 版本會定期接收安全性更新和錯誤修復,以確保它們在生產環境中的安全運行。
- 支援期間:一個 LTS 版本的支援期間通常為 30 個月,這使得開發者可以在相當長的時間內繼續使用這個版本。
LTS 的支援結束:
當一個 LTS 版本的支援期間結束時,以下情況可能發生:
- 不再接收安全更新:一旦支援結束,該版本將不再接收針對新安全漏洞的更新。
- 不再接收錯誤修復:任何針對該版本的錯誤修復也將停止。
- 不再維護:Node.js 社群將不再對該版本進行維護和支援。
- 建議升級:開發者將被建議升級到目前的 LTS 版本或最新版本,以獲得最新的特性、安全性更新和錯誤修復。
如何處理 LTS 版本的結束:
當一個 LTS 版本的支援結束時,開發者可以考慮以下選項:
- 升級到最新 LTS 版本:如果你的應用程式仍然需要長期支援,建議升級到當前的 LTS 版本,以獲得最新的安全性和穩定性。
- 升級到最新版本:如果你的應用程式可以容忍一些變化,可以考慮升級到最新的 Node.js 版本,以獲得最新的功能和改進。
- 保持不變:如果你的應用程式仍然在舊版本上運行良好並且不需要新的功能,你可以繼續使用不再支援的版本,但需要自行承擔相應的風險。
總的來說,LTS 版本的重要性在於提供長期的穩定性和安全性,並且在支援結束後,開發者應該考慮適時升級到較新的版本以保護他們的應用程式。
這邊也要提一個有點小尷尬的事情
我工作用的專案版本,目前是NodeJS 14
改成用NodeJS 16仍然可以進行專案的build、serve之類的
但是改到NodeJS18的話,就會出現一些錯誤訊息與問題
這邊微微了解一下為什麼我的react專案會和NodeJS版本有差異
React 專案與 Node.js 版本之間存在一定的相互關係,特別是在建立和執行 React 應用程式時。
開發環境中的 Node.js:
在開發 React 應用程式時,你需要安裝 Node.js 作為開發環境的一部分。Node.js 提供了 npm(Node Package Manager)這個包管理器,用於安裝和管理與 React 相關的套件和工具。
Node.js 版本的選擇:
你可以根據你的喜好和專案的需求來選擇 Node.js 的版本。通常來說,你可以選擇 LTS(長期支持)版本以獲得長時間的支援和穩定性,這對於生產環境來說特別重要。
npm 套件的相容性:
一些 React 相關的套件或工具可能會依賴於特定版本的 Node.js。因此,在選擇 Node.js 版本時,你需要確保它與你所需的套件相兼容。
建議的 Node.js 版本:
React 官方文檔通常會建議一些相容的 Node.js 版本。你可以在官方文檔或社群的指南中找到相應的信息。
Node.js 環境的設定:
在 React 專案中,你可以使用
.nvmrc
文件來指定所需的 Node.js 版本。這使得在不同專案之間更容易地管理和維護相關的 Node.js 版本。總的來說,React 專案的開發環境通常需要一個適當版本的 Node.js 作為支持。在選擇 Node.js 版本時,你應該考慮到專案的需求、相容性以及你個人的偏好。並確保選擇的版本能夠保證專案的正常運行和開發工作的順利進行。
如果你的專案中使用的 Node.js 版本已經不再得到支援,你應該考慮升級到一個仍在獲得支援的版本。以下是一個詳細的步驟:
確認當前 Node.js 版本:
首先,你需要確認你目前正在使用的 Node.js 版本。你可以在終端機中輸入以下指令:
node --version
這會顯示你目前安裝的 Node.js 版本。
升級 nvm(如果使用):
如果你使用了 nvm(Node Version Manager),建議先升級 nvm 到最新版本,這樣你可以更輕鬆地安裝和管理新版本的 Node.js。
nvm install node --reinstall-packages-from=current
選擇新版本:
使用 nvm 或者直接前往 Node.js 的官方網站下載最新的 LTS 版本。
如果使用 nvm:
nvm install --lts
如果直接下載:
前往 Node.js 官方網站 下載最新的 LTS 版本,並安裝它。
更新 npm(可選):
隨著新版本的 Node.js 安裝,通常也會附帶更新的 npm。你可以檢查新版本的 npm 是否需要更新:
npm --version
測試新版本:
在升級之後,請確保你的專案仍然可以正常運行。測試所有的功能以確保新版本不會對你的應用程式造成任何問題。
備份重要資料:
在進行任何重大升級前,請確保備份重要的專案文件和數據,以免出現意外情況。
更新專案文件(如果需要):
如果你的專案中包含了對 Node.js 版本的特定要求,請確保相應的文件(例如
.nvmrc
)已經更新為反映新的 Node.js 版本。通過這些步驟,你應該能夠安全地升級你的 Node.js 版本,並確保你的專案能夠正常運行。如果你在升級過程中遇到了問題,你可以在相關社群或論壇中尋求幫助。
最後額外詢問與了解,我們安裝套件時候的npm和nodeJS的關係是什麼
Node.js 版本和 npm(Node Package Manager)的版本之間存在著一定的關係:
隨附關係:
每個 Node.js 版本都會隨附一個特定版本的 npm。當你安裝或升級 Node.js 時,相應版本的 npm 也會一起安裝或升級。
npm 隨 Node.js 更新:
隨著 Node.js 的更新,通常會包括一個新版本的 npm。這是因為 Node.js 和 npm 是緊密相關的工具,它們一起提供了開發和部署 JavaScript 應用程式所需的基本功能。
npm 獨立更新:
儘管 npm 通常隨著 Node.js 更新,但也可以單獨進行更新。你可以通過以下指令來更新 npm:
npm install -g npm@latest
這將會安裝最新版本的 npm。
相容性:
在選擇 Node.js 版本時,你也需要考慮與該版本相容的 npm 版本。一般來說,較新版本的 Node.js 也支援較新版本的 npm。
總的來說,Node.js 和 npm 是緊密相關的工具,它們一起提供了開發和執行 JavaScript 應用程式所需的環境和套件管理功能。因此,確保你的 Node.js 版本與相應的 npm 版本相容,可以確保你能夠順利開發和執行你的應用程式。如果你需要升級 npm,你可以使用上述提供的指令來進行更新。
綜合以上內容,以下是有關 Node.js 版本、npm 和專案開發的重點:
- Node.js 版本選擇:
- 選擇適合的 Node.js 版本對於開發和執行應用程式至關重要。
- LTS(長期支援)版本提供了長時間的穩定性和安全性支援,是生產環境中的首選版本。
- Node Version Manager (nvm):
- nvm 是一個方便的工具,可以讓你在不同的專案之間輕鬆地切換和管理 Node.js 版本。
- npm 版本相容性:
- Node.js 版本與相應的 npm 版本之間存在相容性,請確保它們互相支援。
- npm 的獨立更新:
- npm 可以單獨進行更新,通常隨著 Node.js 更新,但也可以獨立更新以獲得最新功能。
- React 專案與 Node.js 版本關聯:
- 在開發 React 應用程式時,需要在開發環境中安裝適當版本的 Node.js。
- LTS 版本重要性:
- LTS 版本提供了長期的穩定性和安全性支援,尤其適用於生產環境。
結語:
選擇合適的 Node.js 版本對於順利開發和執行你的應用程式至關重要。在升級 Node.js 版本時,也要確保相應的 npm 版本相容。使用工具如 nvm 可以讓你更靈活地管理不同專案的 Node.js 版本。總的來說,合理的版本管理將有助於保證你的專案的穩定性和安全性,並確保你能夠充分利用最新的功能和改進。
本次對話記錄在這邊:
https://chat.openai.com/share/573055a1-6bd0-4940-8b13-7244ca688c65
本次有一點點算是下一篇的安裝前導,針對...nodeJS版本無法隨意切換的人aka我
讓專案間的nodeJS版本可以獨立管理是也有好處,但一切就是看維護與開發怎麼安排
所有專案環境一致並一起升級套件也沒有錯,各自分開也沒有不對
有些專案的套件不是那麼好升級,我後來發現我卡在react-konva這個套件的依賴上
另外最近幾天,訂閱這個系列文章的人數突然變多了!
覺得很榮幸,也很高興、更有動力把原本預計要處理的主題給寫完
(別看這樣順順地走,但每一篇仍然花我超過三四個小時才產出來,何況有些要跟著做的)
感謝大家的訂閱與支持,也希望大家不會覺得鐵人賽結束之後每天發文很吵
(快..結束...了...大概....)
然後下一篇!NestJS!
我是因此更了解有關nodeJS的前端工程師一宵三筵,我們明天見!