Skip to content

การสลับเวอร์ชัน Node ด้วย NVM

การใช้งานพื้นฐาน

NVM ให้คำสั่งที่เรียบง่ายแต่ทรงพลังเพื่อสลับระหว่างเวอร์ชัน Node.js ต่างๆ คำสั่งพื้นฐานที่สุดคือ nvm use ซึ่งช่วยให้คุณเปิดใช้งานเวอร์ชัน Node.js ที่ติดตั้งแล้ว

ดูเวอร์ชัน Node ที่มีให้

ก่อนสลับ คุณสามารถใช้คำสั่ง nvm ls เพื่อดูว่าเวอร์ชัน Node.js ใดที่ติดตั้งแล้ว

bash
nvm ls

nvm ls

วิธีต่างๆ ในการสลับเวอร์ชัน

การใช้หมายเลขเวอร์ชันเต็ม

คุณสามารถระบุหมายเลขเวอร์ชันที่สมบูรณ์:

ตัวอย่างเช่น เพื่อใช้ Node.js v24.0.2:

bash
$ nvm use 24.0.2
Now using node v24.0.2 (64-bit)

nvm ls

การใช้หมายเลขเวอร์ชันหลัก

เพียงระบุหมายเลขเวอร์ชันหลัก และ NVM จะใช้เวอร์ชันที่ติดตั้งแล้วล่าสุดของเวอร์ชันหลักนั้น:

bash
$ nvm use 14
Using node v14.17.6 (npm v6.14.15)

การใช้นามแฝง

NVM มีนามแฝงพิเศษในตัวหลายตัว:

bash
# ใช้เวอร์ชันเสถียรล่าสุด
$ nvm use node
Now using node v16.14.0 (npm v8.3.1)

# ใช้เวอร์ชัน LTS ล่าสุด
$ nvm use lts/*
Now using node v16.13.2 (npm v8.1.2)

# ใช้เวอร์ชัน LTS เฉพาะ
$ nvm use lts/gallium
Now using node v16.13.2 (npm v8.1.2)

การระบุสถาปัตยกรรม (เฉพาะ Windows)

บนระบบ Windows คุณสามารถระบุว่าจะใช้เวอร์ชัน 32-bit หรือ 64-bit:

bash
$ nvm use 14.17.0 32
$ nvm use 16.14.0 64

การสลับเวอร์ชันอัตโนมัติด้วยไฟล์ .nvmrc

สร้างไฟล์ชื่อ .nvmrc ในไดเรกทอรีรูทของโปรเจกต์ของคุณพร้อมหมายเลขเวอร์ชัน Node.js เป็นเนื้อหา จากนั้นเพียงรันคำสั่ง nvm use (โดยไม่มีอาร์กิวเมนต์) และ NVM จะอ่านเวอร์ชันจากไฟล์ .nvmrc และสลับไปยังเวอร์ชันนั้นโดยอัตโนมัติ

  1. สร้างไฟล์ .nvmrc:
bash
$ echo "16.14.0" > .nvmrc
  1. รันในไดเรกทอรีโปรเจกต์:
bash
$ nvm use
Found '/path/to/project/.nvmrc' with version <16.14.0>
Now using node v16.14.0 (npm v8.3.1)

ตัวอย่างเนื้อหาไฟล์ .nvmrc:

  • 16.14.0 - เวอร์ชันที่แน่นอน
  • 16 - เวอร์ชันล่าสุดของเวอร์ชันหลัก
  • lts/* - เวอร์ชัน LTS ล่าสุด
  • node - เวอร์ชัน Node.js ล่าสุด

ตั้งค่าเวอร์ชัน Node.js เริ่มต้น

คุณสามารถตั้งค่าเวอร์ชัน Node.js เริ่มต้นที่จะถูกใช้โดยอัตโนมัติทุกครั้งที่คุณเปิดเทอร์มินัลใหม่:

bash
$ nvm alias default 16.14.0
default -> 16.14.0 (-> v16.14.0)

ด้วยวิธีนี้ แม้ว่าคุณจะไม่รันคำสั่ง nvm use เวอร์ชันที่ระบุจะถูกใช้เป็นค่าเริ่มต้น

ข้อพิจารณาเมื่อสลับเวอร์ชัน

การจัดการแพ็กเกจทั่วโลก

เมื่อสลับเวอร์ชัน Node.js แพ็กเกจที่ติดตั้งทั่วโลกจะไม่อพยพโดยอัตโนมัติ แต่ละเวอร์ชัน Node.js มีชุดแพ็กเกจทั่วโลกแยกต่างหาก

หากคุณต้องการคัดลอกแพ็กเกจทั่วโลกทั้งหมดจากเวอร์ชันหนึ่งไปยังอีกเวอร์ชันหนึ่ง คุณสามารถใช้:

bash
# คัดลอกแพ็กเกจทั่วโลกจาก v14.17.0 ไปยัง v16.14.0
$ nvm install 16.14.0 --reinstall-packages-from=14.17.0

การใช้เวอร์ชันอื่นชั่วคราว

หากคุณต้องการเพียงรันคำสั่งด้วยเวอร์ชัน Node.js ที่แตกต่างกันโดยไม่สลับเวอร์ชันของเซสชันปัจจุบัน คุณสามารถใช้ nvm run:

bash
$ nvm run 14.17.0 app.js

ตรวจสอบเวอร์ชันปัจจุบัน

เพื่อตรวจสอบว่าเวอร์ชัน Node.js ใดที่กำลังใช้งานอยู่:

bash
$ nvm current
v16.14.0

ปัญหาทั่วไปและวิธีแก้ไข

ตัวแปรสภาพแวดล้อมสูญหายหลังจากสลับ

ปัญหา: หลังจากสลับเวอร์ชัน ตัวแปรสภาพแวดล้อมที่ตั้งไว้ก่อนหน้านี้เช่น NODE_PATH อาจสูญหาย วิธีแก้ไข: เพิ่มการตั้งค่าตัวแปรสภาพแวดล้อมในไฟล์ .bashrc หรือ .zshrc ของคุณ

การสลับเวอร์ชันอัตโนมัติ

หากคุณต้องการสลับไปยังเวอร์ชัน Node.js ที่ระบุในไฟล์ .nvmrc โดยอัตโนมัติเมื่อเข้าสู่ไดเรกทอรีโปรเจกต์ คุณสามารถเพิ่มต่อไปนี้ใน .bashrc หรือ .zshrc ของคุณ:

สำหรับ Bash:

bash
cdnvm() {
    command cd "$@" || return $?
    nvm_path="$(nvm_find_up .nvmrc | tr -d '\n')"
    
    if [ -e "$nvm_path/.nvmrc" ]; then
        declare default_version;
        default_version="$(nvm version default)"
        
        declare nvmrc_version;
        nvmrc_version="$(nvm version "$(cat "$nvm_path/.nvmrc")")"
        
        if [ "$nvmrc_version" = "N/A" ]; then
            echo "Warning: $(cat "$nvm_path/.nvmrc") version not installed"
        elif [ "$nvmrc_version" != "$default_version" ]; then
            nvm use > /dev/null
        fi
    fi
}
alias cd='cdnvm'

สำหรับ Zsh:

bash
autoload -U add-zsh-hook
load-nvmrc() {
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
      nvm use
    fi
  elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

แนวทางปฏิบัติที่ดีที่สุด

  1. สร้างไฟล์ .nvmrc สำหรับแต่ละโปรเจกต์: รับประกันว่าสมาชิกทีมใช้เวอร์ชัน Node.js เดียวกัน
  2. อัปเดตเป็นเวอร์ชัน LTS เป็นประจำ: เวอร์ชัน LTS เสถียรกว่าและเหมาะสำหรับสภาพแวดล้อมการผลิต
  3. ใช้การกำหนดเวอร์ชันเชิงความหมาย: ระบุเวอร์ชันที่แน่นอนในไฟล์ .nvmrc เพื่อหลีกเลี่ยงปัญหาความเข้ากันได้
  4. ตั้งค่าเวอร์ชันเริ่มต้นที่เหมาะสม: ตั้งค่าเวอร์ชัน Node.js เริ่มต้นสำหรับการพัฒนาประจำวัน

พารามิเตอร์คำสั่ง nvm use

ParameterDescription
<version>ระบุเวอร์ชัน Node.js ที่จะใช้
nodeใช้เวอร์ชันล่าสุดของ Node.js
lts/*ใช้เวอร์ชัน long-term support ล่าสุด
lts/<name>ใช้เวอร์ชัน long-term support เฉพาะ
<version> <architecture>(เฉพาะ Windows) ระบุว่าจะใช้เวอร์ชัน 32 หรือ 64-bit

ด้วยวิธีเหล่านี้ คุณสามารถสลับระหว่างเวอร์ชัน Node.js ต่างๆ ได้อย่างง่ายดายเพื่อตอบสนองความต้องการในการพัฒนาของโปรเจกต์ต่างๆ

NVM - Node Version Manager สำหรับ Windows, Linux และ macOS