Chuyển đổi phiên bản Node bằng NVM
Cách sử dụng cơ bản
NVM cung cấp các lệnh đơn giản nhưng mạnh mẽ để chuyển đổi giữa các phiên bản Node.js khác nhau. Lệnh cơ bản nhất là nvm use, cho phép bạn kích hoạt một phiên bản Node.js đã cài đặt.
Xem các phiên bản Node có sẵn
Trước khi chuyển đổi, bạn có thể sử dụng lệnh nvm ls để xem các phiên bản Node.js nào đã được cài đặt.
nvm ls
Các cách khác nhau để chuyển đổi phiên bản
Sử dụng số phiên bản đầy đủ
Bạn có thể chỉ định số phiên bản đầy đủ:
Ví dụ, để sử dụng Node.js v24.0.2:
$ nvm use 24.0.2
Now using node v24.0.2 (64-bit)
Sử dụng số phiên bản chính
Chỉ cần chỉ định số phiên bản chính, và NVM sẽ sử dụng phiên bản đã cài đặt mới nhất của phiên bản chính đó:
$ nvm use 14
Using node v14.17.6 (npm v6.14.15)Sử dụng bí danh
NVM có một số bí danh đặc biệt tích hợp sẵn:
# Sử dụng phiên bản ổn định mới nhất
$ nvm use node
Now using node v16.14.0 (npm v8.3.1)
# Sử dụng phiên bản LTS mới nhất
$ nvm use lts/*
Now using node v16.13.2 (npm v8.1.2)
# Sử dụng phiên bản LTS cụ thể
$ nvm use lts/gallium
Now using node v16.13.2 (npm v8.1.2)Chỉ định kiến trúc (Chỉ Windows)
Trên hệ thống Windows, bạn có thể chỉ định có sử dụng phiên bản 32-bit hay 64-bit:
$ nvm use 14.17.0 32
$ nvm use 16.14.0 64Chuyển đổi phiên bản tự động với tệp .nvmrc
Tạo tệp có tên .nvmrc trong thư mục gốc của dự án với số phiên bản Node.js làm nội dung của nó. Sau đó, chỉ cần chạy lệnh nvm use (không có đối số), và NVM sẽ đọc phiên bản từ tệp .nvmrc và tự động chuyển sang phiên bản đó.
- Tạo tệp
.nvmrc:
$ echo "16.14.0" > .nvmrc- Chạy trong thư mục dự án:
$ nvm use
Found '/path/to/project/.nvmrc' with version <16.14.0>
Now using node v16.14.0 (npm v8.3.1)Ví dụ về nội dung tệp .nvmrc:
16.14.0- Phiên bản chính xác16- Phiên bản mới nhất của phiên bản chínhlts/*- Phiên bản LTS mới nhấtnode- Phiên bản Node.js mới nhất
Đặt phiên bản Node.js mặc định
Bạn có thể đặt phiên bản Node.js mặc định sẽ tự động được sử dụng mỗi khi bạn mở terminal mới:
$ nvm alias default 16.14.0
default -> 16.14.0 (-> v16.14.0)Bằng cách này, ngay cả khi bạn không chạy lệnh nvm use, phiên bản được chỉ định sẽ được sử dụng theo mặc định.
Cân nhắc khi chuyển đổi phiên bản
Quản lý gói toàn cục
Khi chuyển đổi phiên bản Node.js, các gói được cài đặt toàn cục không tự động di chuyển. Mỗi phiên bản Node.js có bộ gói toàn cục riêng biệt.
Nếu bạn muốn sao chép tất cả các gói toàn cục từ một phiên bản sang phiên bản khác, bạn có thể sử dụng:
# Sao chép gói toàn cục từ v14.17.0 sang v16.14.0
$ nvm install 16.14.0 --reinstall-packages-from=14.17.0Tạm thời sử dụng phiên bản khác
Nếu bạn chỉ muốn chạy lệnh với phiên bản Node.js khác mà không chuyển đổi phiên bản của phiên hiện tại, bạn có thể sử dụng nvm run:
$ nvm run 14.17.0 app.jsKiểm tra phiên bản hiện tại
Để kiểm tra phiên bản Node.js nào hiện đang được sử dụng:
$ nvm current
v16.14.0Vấn đề và giải pháp thường gặp
Biến môi trường bị mất sau khi chuyển đổi
Vấn đề: Sau khi chuyển đổi phiên bản, các biến môi trường đã đặt trước đó như NODE_PATH có thể bị mất. Giải pháp: Thêm cài đặt biến môi trường vào tệp .bashrc hoặc .zshrc của bạn.
Chuyển đổi phiên bản tự động
Nếu bạn muốn tự động chuyển sang phiên bản Node.js được chỉ định trong tệp .nvmrc khi vào thư mục dự án, bạn có thể thêm phần sau vào .bashrc hoặc .zshrc của bạn:
Đối với 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'Đối với Zsh:
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-nvmrcThực hành tốt nhất
- Tạo tệp
.nvmrccho mỗi dự án: Đảm bảo các thành viên nhóm sử dụng cùng phiên bản Node.js - Cập nhật thường xuyên lên phiên bản LTS: Phiên bản LTS ổn định hơn và phù hợp cho môi trường sản xuất
- Sử dụng phiên bản ngữ nghĩa: Chỉ định phiên bản chính xác trong tệp
.nvmrcđể tránh vấn đề tương thích - Đặt phiên bản mặc định phù hợp: Đặt phiên bản Node.js mặc định cho phát triển hàng ngày
Tham số lệnh nvm use
| Tham số | Mô tả |
|---|---|
<version> | Chỉ định phiên bản Node.js để sử dụng |
node | Sử dụng phiên bản mới nhất của Node.js |
lts/* | Sử dụng phiên bản hỗ trợ dài hạn mới nhất |
lts/<name> | Sử dụng phiên bản hỗ trợ dài hạn cụ thể |
<version> <architecture> | (Chỉ Windows) Chỉ định có sử dụng phiên bản 32 hay 64-bit |
Với các phương pháp này, bạn có thể dễ dàng chuyển đổi giữa các phiên bản Node.js khác nhau để đáp ứng nhu cầu phát triển của các dự án khác nhau.