iT邦幫忙

2023 iThome 鐵人賽

0
自我挑戰組

用ChatGPT詠唱來完成工作與點亮前後端技能樹系列 第 41

【Day41】ChatGPT請教教我:nvm!Node.js 版本控管!

  • 分享至 

  • xImage
  •  

這個章節要來探討nvm這個工具

在我安裝Nest的時候,突然發現我兩年前開發專案用的 Node.js 14已經太舊了
用14版會噴出很多錯誤訊息

但工作的專案版本因為套件有相依的問題,不能輕易直接升版,建置會跑錯誤訊息
想要更輕鬆的切換node版本!多啦O夢快救救我!
https://ithelp.ithome.com.tw/upload/images/20231024/20135750kvP7M9nDsR.png

要在電腦中隨意切換 Node.js 版本,你可以使用一個稱為 nvm (Node Version Manager) 的工具。這是一個方便的工具,可以讓你在不同版本的 Node.js 之間輕鬆切換。

以下是使用 nvm 的步驟:

  1. 安裝 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
    

    安裝完成後,重新開啟一個終端機窗口。

  2. 安裝 Node.js

    安裝完 nvm 後,你可以使用以下指令安裝你所需的 Node.js 版本:

    nvm install 版本號
    

    例如,如果你想要安裝 Node.js 的 LTS 版本,可以執行:

    nvm install --lts
    
  3. 切換 Node.js 版本

    安裝完多個版本後,你可以隨時切換到所需的版本:

    nvm use 版本號
    

    例如:

    nvm use 14.17.6
    

    這將使你的系統在需要時使用特定版本的 Node.js。

透過這個方式,你可以輕鬆地在不同的專案中使用不同版本的 Node.js,而不必全局更改安裝的版本。

OK!
ChatGPT跟我們介紹nvm這個工具
開始安裝之前先看一下介紹,了解一下這個工具

nvm(Node Version Manager)介紹

https://ithelp.ithome.com.tw/upload/images/20231024/20135750fTaujKTh2X.png

當然,讓我們針對 nvm(Node Version Manager)的概念和功能提供一個完整的介紹。

概念

nvm 是一個用於管理 Node.js 版本的工具。它允許你在同一台電腦上同時安裝和管理多個 Node.js 版本,並輕鬆切換它們以滿足不同專案的需求。這對於開發人員來說非常有用,因為不同的專案可能需要不同版本的 Node.js,或者你可能需要測試你的應用程序在不同版本下的運行情況。

功能

  1. 安裝不同版本的 Node.js:nvm 允許你從 Node.js 的官方存儲庫中安裝不同版本的 Node.js。你可以輕鬆地安裝最新的 LTS 版本、最新的穩定版或特定版本的 Node.js。
  2. 切換 Node.js 版本:使用 nvm,你可以隨時切換正在使用的 Node.js 版本。這可以通過運行 nvm use 命令來實現,並且你的系統將在需要時切換到指定版本。
  3. 管理全局和專案範圍的 Node.js 版本:nvm 允許你設置全局的 Node.js 版本,這將影響你整個系統的默認 Node.js 版本。此外,你還可以在每個專案的根目錄中創建一個 .nvmrc 文件,以指定該專案所需的 Node.js 版本。當你進入專案目錄時,nvm 將自動切換到正確的版本。
  4. 自動切換版本:當你進入專案目錄時,nvm 可以自動檢測 .nvmrc 文件,並切換到所需的 Node.js 版本。這使得在不同專案之間切換版本變得非常方便。
  5. 管理全局和專案範圍的 npm 套件:除了管理 Node.js 版本外,nvm 還允許你管理全局和專案範圍的 npm 套件。這意味著你可以為每個專案保持獨立的 npm 套件,而不會影響其他專案。

總之,nvm 是一個強大的工具,特別適合前端和後端開發人員,因為他們可能需要在不同的專案中使用不同版本的 Node.js,並確保一致性和方便性。這讓你能夠更有效地管理你的 Node.js 開發環境。

了解完畢就可以來再看一下安裝教學
事情是這樣的,不同的作業系統安裝方式有一點不同

而且直接照著ChatGPT一開始說的方式安裝
只會得到「'nvm' 不是內部或外部命令、可執行的程式或批次檔。」
或是「nvm: command not found」

安裝教學

https://ithelp.ithome.com.tw/upload/images/20231024/20135750bx3m3sXJWq.png

好的,我將為你提供在 Windows 和 macOS 上安裝 nvm 的詳細步驟。

在 Windows 上安裝 nvm:

  1. 下載 nvm-installer

    前往 nvm 的 GitHub 存儲庫 nvm-windows 下載最新版本的 nvm-installer(nvm-setup.zip)。

  2. 執行 nvm-installer

    解壓縮下載的 zip 檔案,然後執行 nvm-setup.exe 安裝程序。

  3. 按照安裝程序指示

    遵循安裝程序的提示進行安裝。你可以接受所有默認設置,除非你有特定的需求。

  4. 確認 nvm 安裝

    安裝完成後,打開一個新的終端窗口,輸入以下指令來確認 nvm 是否成功安裝:

    nvm --version
    

    如果成功安裝,它會顯示 nvm 的版本號。

在 macOS 上安裝 nvm:

  1. 使用 Homebrew 安裝 nvm

    開啟終端機並執行以下指令來使用 Homebrew 安裝 nvm:

    brew install nvm
    
  2. 配置終端機文件(例如:.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"
    
  3. 重新加載配置文件

    返回終端機,執行以下指令來重新加載你的配置文件:

    source ~/.bash_profile
    

    或者

    source ~/.zshrc
    
  4. 確認 nvm 安裝

    輸入以下指令來確認 nvm 是否成功安裝:

    nvm --version
    

    如果成功安裝,它會顯示 nvm 的版本號。

現在你已經在你的系統上成功安裝了 nvm,你可以開始使用它來管理你的 Node.js 版本了。如果你需要安裝特定版本的 Node.js,可以使用 nvm install 版本號 命令,然後使用 nvm use 版本號 來切換版本。

好,我覺得ChatGPT連nano的使用方式都有提到蠻友善的
那接下來來了解NVM的詳細使用教學

nvm指令

https://ithelp.ithome.com.tw/upload/images/20231024/20135750v8K099f3Pv.png

當然,我會提供一些常用的 nvm 指令,這些指令可以幫助你有效地管理你的 Node.js 版本。請注意,這些指令將以台灣用語和繁體中文提供。

  1. 安裝特定版本的 Node.js

    nvm install 版本號
    

    例如,如果你想安裝 Node.js 的 LTS 版本(長期支持版本),可以使用:

    nvm install --lts
    
  2. 列出所有已安裝的 Node.js 版本

    nvm ls
    

    這會顯示所有你在系統上安裝的 Node.js 版本。

  3. 切換到特定版本的 Node.js

    nvm use 版本號
    

    例如:

    nvm use 14.17.6
    

    這將使你的系統在需要時使用特定版本的 Node.js。

  4. 設定預設的 Node.js 版本

    nvm alias default 版本號
    

    這將設置一個預設的 Node.js 版本,當你開啟新的終端窗口時將會使用它。

  5. 查看當前使用的 Node.js 版本

    nvm current
    

    這會顯示當前正在使用的 Node.js 版本。

  6. 卸載特定版本的 Node.js

    nvm uninstall 版本號
    

    這會刪除你指定的 Node.js 版本。

  7. 查看可用的 Node.js 版本

    nvm ls-remote
    

    這會列出所有可用的 Node.js 版本。

  8. 更新 nvm

    nvm install --latest-npm
    

    這將安裝最新版本的 npm(Node 包管理器)。

  9. 更新 nvm 本身:

    nvm upgrade
    

    這會升級 nvm 到最新版本。

  10. 列出所有可用的 nvm 指令

    nvm help
    

    這會顯示所有可用的 nvm 指令及其說明。

這些指令將幫助你在不同專案之間輕鬆地管理和切換 Node.js 版本。如果你需要更詳細的幫助,可以使用 nvm help 來查看 nvm 的說明文檔。

每次都比貪心還要更貪心
https://ithelp.ithome.com.tw/upload/images/20231024/20135750Fvw5Z4rkFU.png

當然,除了基本的使用,你也可以探索一些進階的 nvm 功能,以更有效地管理你的 Node.js 環境。以下是一些進階使用 nvm 的示例:

  1. 使用 .nvmrc 文件

    在你的專案目錄中,你可以創建一個名為 .nvmrc 的文件,其中包含所需的 Node.js 版本號。當你進入該專案目錄時,nvm 會自動切換到指定的版本。例如,創建一個 .nvmrc 文件並添加以下內容:

    14.17.6
    

    當你進入專案目錄時,執行 nvm use 將自動切換到 Node.js 14.17.6。

  2. 使用多個 .nvmrc 文件

    如果你的專案有不同的部分需要不同版本的 Node.js,你可以在不同的子目錄中創建不同的 .nvmrc 文件。這樣,你可以根據專案的部分選擇不同的 Node.js 版本。

  3. 使用 nvm 別名

    你可以為不同版本的 Node.js 創建別名,以簡化版本切換。例如,你可以創建一個名為 "default" 的別名,讓它指向你喜歡的 Node.js 版本:

    nvm alias default 14.17.6
    

    現在,當你運行 nvm use default 時,它將自動切換到 14.17.6 版本。

  4. 使用 nvm 的套件管理功能

    nvm 還具有用於管理全局和專案範圍 npm 套件的功能。你可以使用 nvm use 版本號 來切換到特定版本的 Node.js,然後在專案中運行 npm install 以安裝該版本下所需的套件。這樣可以確保專案的 npm 套件版本與所選 Node.js 版本兼容。

  5. 導入和導出版本號

    nvm 允許你將版本號導入和導出到文件。例如,你可以將目前的版本號導出到文件:

    nvm list > versions.txt
    

    然後,你可以在另一個地方導入這些版本號:

    nvm install $(cat versions.txt)
    

    這對於在不同計算機上保持一致的 Node.js 版本非常有用。

這些進階使用方式可以幫助你更靈活地管理 Node.js 版本,特別是在擁有多個專案,每個專案需要不同版本的情況下。請根據你的需求來選擇適合的功能。

NodeJS版本&概念

nvm是用來切換與管理版本的
一開始也提到,我是因為遇到了版本問題無法安裝nestJS,所以開始尋求版本管理的工具

NodeJS的版本到底影響了什麼,其版本又為什麼過個兩三年就被視為「過舊」
我們來好好了解一下
https://ithelp.ithome.com.tw/upload/images/20231024/20135750S6BDIIDTgN.png

Node.js 的不同版本會包含以下種類的差異:

  1. 新特性和改進

    每個新版本通常會引入新的特性、功能和改進。這可能包括新的 JavaScript 語言功能、API 的新增或變更、效能優化,甚至是全新的模組。

  2. 效能提升

    隨著 Node.js 版本的升級,通常會帶來效能的提升。這可能是由於運行時的優化、V8 引擎的更新或其他相關的改進。

  3. 安全性改進

    新版本通常會修補先前版本中的安全漏洞,這使得升級到最新版本尤其重要以保護你的應用程式。

  4. 穩定性和可靠性

    隨著版本的更新,Node.js 也會變得更加穩定和可靠。這包括修復先前版本中的錯誤和問題。

  5. API 變更

    有時,新版本可能會引入對 API 的變更。這可能會影響到使用特定模組或函數的代碼。

  6. 第三方套件和模組的相容性

    一些第三方套件或模組可能會依賴於特定的 Node.js 版本。因此,升級 Node.js 時,你需要確保你的依賴項也能與新版本兼容。

  7. Node.js 的 LTS 版本

    LTS(長期支持)版本會提供長達 30 個月的支持,包括安全性和錯誤修復。這使得它成為生產環境中的首選版本。

總的來說,升級到最新版本的 Node.js 通常是一個好主意,因為它會帶來許多新的特性、效能提升和安全性改進。但在進行升級之前,請確保測試你的應用程式以確保它在新版本中運行正常。如果你的應用程式依賴於特定版本的 Node.js,則需要考慮相關的相容性問題。

LTS長期支持版本

https://ithelp.ithome.com.tw/upload/images/20231024/20135750cdeUAM1nm6.png

LTS(長期支援)是 Node.js 的一個版本分支,其主要目的是提供長期的穩定性和安全性支持。以下是有關 LTS 的詳細說明以及在不再得到支援之後可能發生的情況:

LTS(長期支援)的重要性:

  1. 長期穩定性:LTS 版本被設計為提供長時間的穩定性,這使得它成為生產環境中首選的版本。
  2. 安全性和錯誤修復:LTS 版本會定期接收安全性更新和錯誤修復,以確保它們在生產環境中的安全運行。
  3. 支援期間:一個 LTS 版本的支援期間通常為 30 個月,這使得開發者可以在相當長的時間內繼續使用這個版本。

LTS 的支援結束:

當一個 LTS 版本的支援期間結束時,以下情況可能發生:

  1. 不再接收安全更新:一旦支援結束,該版本將不再接收針對新安全漏洞的更新。
  2. 不再接收錯誤修復:任何針對該版本的錯誤修復也將停止。
  3. 不再維護:Node.js 社群將不再對該版本進行維護和支援。
  4. 建議升級:開發者將被建議升級到目前的 LTS 版本或最新版本,以獲得最新的特性、安全性更新和錯誤修復。

如何處理 LTS 版本的結束:

當一個 LTS 版本的支援結束時,開發者可以考慮以下選項:

  1. 升級到最新 LTS 版本:如果你的應用程式仍然需要長期支援,建議升級到當前的 LTS 版本,以獲得最新的安全性和穩定性。
  2. 升級到最新版本:如果你的應用程式可以容忍一些變化,可以考慮升級到最新的 Node.js 版本,以獲得最新的功能和改進。
  3. 保持不變:如果你的應用程式仍然在舊版本上運行良好並且不需要新的功能,你可以繼續使用不再支援的版本,但需要自行承擔相應的風險。

總的來說,LTS 版本的重要性在於提供長期的穩定性和安全性,並且在支援結束後,開發者應該考慮適時升級到較新的版本以保護他們的應用程式。

React專案與NodeJS版本關聯

這邊也要提一個有點小尷尬的事情
我工作用的專案版本,目前是NodeJS 14
改成用NodeJS 16仍然可以進行專案的build、serve之類的
但是改到NodeJS18的話,就會出現一些錯誤訊息與問題

這邊微微了解一下為什麼我的react專案會和NodeJS版本有差異
https://ithelp.ithome.com.tw/upload/images/20231024/20135750e3ZsF7bWBx.png

React 專案與 Node.js 版本之間存在一定的相互關係,特別是在建立和執行 React 應用程式時。

  1. 開發環境中的 Node.js

    在開發 React 應用程式時,你需要安裝 Node.js 作為開發環境的一部分。Node.js 提供了 npm(Node Package Manager)這個包管理器,用於安裝和管理與 React 相關的套件和工具。

  2. Node.js 版本的選擇

    你可以根據你的喜好和專案的需求來選擇 Node.js 的版本。通常來說,你可以選擇 LTS(長期支持)版本以獲得長時間的支援和穩定性,這對於生產環境來說特別重要。

  3. npm 套件的相容性

    一些 React 相關的套件或工具可能會依賴於特定版本的 Node.js。因此,在選擇 Node.js 版本時,你需要確保它與你所需的套件相兼容。

  4. 建議的 Node.js 版本

    React 官方文檔通常會建議一些相容的 Node.js 版本。你可以在官方文檔或社群的指南中找到相應的信息。

  5. Node.js 環境的設定

    在 React 專案中,你可以使用 .nvmrc 文件來指定所需的 Node.js 版本。這使得在不同專案之間更容易地管理和維護相關的 Node.js 版本。

總的來說,React 專案的開發環境通常需要一個適當版本的 Node.js 作為支持。在選擇 Node.js 版本時,你應該考慮到專案的需求、相容性以及你個人的偏好。並確保選擇的版本能夠保證專案的正常運行和開發工作的順利進行。

https://ithelp.ithome.com.tw/upload/images/20231024/20135750ejc4ZV9wHo.png

如果你的專案中使用的 Node.js 版本已經不再得到支援,你應該考慮升級到一個仍在獲得支援的版本。以下是一個詳細的步驟:

  1. 確認當前 Node.js 版本

    首先,你需要確認你目前正在使用的 Node.js 版本。你可以在終端機中輸入以下指令:

    node --version
    

    這會顯示你目前安裝的 Node.js 版本。

  2. 升級 nvm(如果使用)

    如果你使用了 nvm(Node Version Manager),建議先升級 nvm 到最新版本,這樣你可以更輕鬆地安裝和管理新版本的 Node.js。

    nvm install node --reinstall-packages-from=current
    
  3. 選擇新版本

    使用 nvm 或者直接前往 Node.js 的官方網站下載最新的 LTS 版本。

    • 如果使用 nvm:

      nvm install --lts
      
    • 如果直接下載:

      前往 Node.js 官方網站 下載最新的 LTS 版本,並安裝它。

  4. 更新 npm(可選)

    隨著新版本的 Node.js 安裝,通常也會附帶更新的 npm。你可以檢查新版本的 npm 是否需要更新:

    npm --version
    
  5. 測試新版本

    在升級之後,請確保你的專案仍然可以正常運行。測試所有的功能以確保新版本不會對你的應用程式造成任何問題。

  6. 備份重要資料

    在進行任何重大升級前,請確保備份重要的專案文件和數據,以免出現意外情況。

  7. 更新專案文件(如果需要)

    如果你的專案中包含了對 Node.js 版本的特定要求,請確保相應的文件(例如 .nvmrc)已經更新為反映新的 Node.js 版本。

通過這些步驟,你應該能夠安全地升級你的 Node.js 版本,並確保你的專案能夠正常運行。如果你在升級過程中遇到了問題,你可以在相關社群或論壇中尋求幫助。

npm & NodeJS

最後額外詢問與了解,我們安裝套件時候的npm和nodeJS的關係是什麼
https://ithelp.ithome.com.tw/upload/images/20231024/20135750umRusPro6s.png

Node.js 版本和 npm(Node Package Manager)的版本之間存在著一定的關係:

  1. 隨附關係

    每個 Node.js 版本都會隨附一個特定版本的 npm。當你安裝或升級 Node.js 時,相應版本的 npm 也會一起安裝或升級。

  2. npm 隨 Node.js 更新

    隨著 Node.js 的更新,通常會包括一個新版本的 npm。這是因為 Node.js 和 npm 是緊密相關的工具,它們一起提供了開發和部署 JavaScript 應用程式所需的基本功能。

  3. npm 獨立更新

    儘管 npm 通常隨著 Node.js 更新,但也可以單獨進行更新。你可以通過以下指令來更新 npm:

    npm install -g npm@latest
    

    這將會安裝最新版本的 npm。

  4. 相容性

    在選擇 Node.js 版本時,你也需要考慮與該版本相容的 npm 版本。一般來說,較新版本的 Node.js 也支援較新版本的 npm。

總的來說,Node.js 和 npm 是緊密相關的工具,它們一起提供了開發和執行 JavaScript 應用程式所需的環境和套件管理功能。因此,確保你的 Node.js 版本與相應的 npm 版本相容,可以確保你能夠順利開發和執行你的應用程式。如果你需要升級 npm,你可以使用上述提供的指令來進行更新。

統整重點

https://ithelp.ithome.com.tw/upload/images/20231024/20135750OuASSRAFyI.png

綜合以上內容,以下是有關 Node.js 版本、npm 和專案開發的重點:

  1. Node.js 版本選擇
    • 選擇適合的 Node.js 版本對於開發和執行應用程式至關重要。
    • LTS(長期支援)版本提供了長時間的穩定性和安全性支援,是生產環境中的首選版本。
  2. Node Version Manager (nvm)
    • nvm 是一個方便的工具,可以讓你在不同的專案之間輕鬆地切換和管理 Node.js 版本。
  3. npm 版本相容性
    • Node.js 版本與相應的 npm 版本之間存在相容性,請確保它們互相支援。
  4. npm 的獨立更新
    • npm 可以單獨進行更新,通常隨著 Node.js 更新,但也可以獨立更新以獲得最新功能。
  5. React 專案與 Node.js 版本關聯
    • 在開發 React 應用程式時,需要在開發環境中安裝適當版本的 Node.js。
  6. 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的前端工程師一宵三筵,我們明天見!


上一篇
【Day40】ChatGPT請教教我:進階SQL語法!JOIN!
下一篇
【Day42】ChatGPT請教教我:NestJS!(一)- 安裝 & 基本介紹 & Module概念
系列文
用ChatGPT詠唱來完成工作與點亮前後端技能樹56
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言