Bạn đã bao giờ hào hứng chuẩn bị chạy một dự án Node.js hay thực thi một đoạn script quan trọng, chỉ để nhận lại dòng thông báo lạnh lùng trên màn hình terminal: “bash: node: command not found”? Đây là một trong những lỗi phổ biến và gây khó chịu nhất đối với các lập trình viên, đặc biệt là những người mới làm quen với môi trường Linux là gì/Unix là gì. Lỗi này xuất hiện khi shell (bash) không thể tìm thấy tệp thực thi của Node.js trong các thư mục hệ thống được chỉ định. Về cơ bản, hệ thống của bạn không biết lệnh “node” là gì và phải thực thi nó ở đâu.
Trong bài viết này, AZWEB sẽ cùng bạn đi sâu vào phân tích nguyên nhân gốc rễ và cung cấp các bước xử lý chi tiết, từ việc kiểm tra cài đặt Node.js, cấu hình biến môi trường PATH, cho đến các phương pháp cài đặt chuẩn xác nhất. Với cấu trúc rõ ràng, bạn sẽ dễ dàng theo dõi và khắc phục triệt để lỗi “command not found”, giúp môi trường phát triển của bạn hoạt động trở lại một cách trơn tru và hiệu quả.

Nguyên nhân phát sinh lỗi bash node command not found
Để khắc phục lỗi một cách hiệu quả, trước tiên chúng ta cần hiểu rõ những nguyên nhân chính gây ra nó. Lỗi “bash: node: command not found” thường xuất phát từ hai lý do cơ bản: Node.js chưa tồn tại trên hệ thống hoặc hệ thống không biết nơi để tìm nó. Việc xác định đúng nguyên nhân sẽ giúp bạn chọn đúng giải pháp và tiết kiệm thời gian xử lý. Hãy cùng AZWEB phân tích chi tiết từng trường hợp.
Node.js chưa được cài đặt trên hệ thống
Đây là nguyên nhân đơn giản và phổ biến nhất. Lệnh node là tệp thực thi chính của môi trường Node.js. Nếu bạn chưa cài đặt Node.js trên máy chủ hoặc máy tính cá nhân, hệ điều hành sẽ không thể nhận diện được lệnh này. Điều này thường xảy ra trên các hệ thống mới thiết lập, môi trường container tối giản, hoặc khi bạn quên một bước quan trọng trong quá trình chuẩn bị môi trường phát triển. Cách nhận biết rõ ràng nhất là khi bạn thử kiểm tra phiên bản Node.js bằng lệnh node -v và nhận lại ngay lập tức lỗi “command not found”. Nếu không có Node.js, không có lệnh node nào để chạy cả.
Biến môi trường PATH chưa được cấu hình đúng
Đây là một nguyên nhân mang tính kỹ thuật hơn và thường gây bối rối cho nhiều người. Biến môi trường PATH trong các hệ điều hành dựa trên Unix (như Linux, macOS) là một danh sách các đường dẫn thư mục mà shell sẽ tìm kiếm khi bạn gõ một lệnh. Khi bạn nhập node, shell sẽ duyệt qua từng thư mục trong PATH để tìm một tệp thực thi có tên là “node”. Nếu Node.js đã được cài đặt nhưng thư mục chứa tệp thực thi của nó (ví dụ: /usr/local/bin hoặc /home/user/.nvm/versions/node/v16.15.0/bin) không nằm trong danh sách PATH, shell sẽ không tìm thấy nó và báo lỗi. Lỗi này thường xảy ra khi bạn cài đặt Node.js thủ công, sử dụng các công cụ quản lý phiên bản như WSL là gì hoặc nvm mà không cấu hình shell đúng cách, hoặc khi các file cấu hình shell (.bashrc, .zshrc) bị sửa đổi sai.

Kiểm tra trạng thái cài đặt Node.js trên hệ thống
Trước khi tiến hành cài đặt hay cấu hình lại bất cứ thứ gì, bước đầu tiên và quan trọng nhất là xác định chính xác tình trạng hiện tại của Node.js trên hệ thống của bạn. Việc kiểm tra này sẽ giúp bạn biết được liệu Node.js đã được cài đặt hay chưa và biến môi trường PATH có đang trỏ đúng đến vị trí của nó không. Đây là bước chẩn đoán cốt lõi để tìm ra hướng giải quyết phù hợp.
Dùng lệnh kiểm tra phiên bản Node.js
Cách nhanh nhất và đơn giản nhất để kiểm tra sự tồn tại của Node.js là yêu cầu nó tự báo cáo phiên bản. Mở terminal của bạn và gõ một trong hai lệnh sau: node -v Hoặc node --version
Nếu Node.js đã được cài đặt và cấu hình đúng, terminal sẽ trả về số phiên bản hiện tại, ví dụ như v18.17.1 hoặc v20.5.0. Kết quả này xác nhận rằng lệnh node có thể được tìm thấy và thực thi. Ngược lại, nếu bạn nhận được thông báo “bash: node: command not found”, điều đó có nghĩa là hệ thống không tìm thấy lệnh node. Lúc này, bạn có thể kết luận rằng hoặc Node.js chưa được cài đặt, hoặc biến môi trường PATH đang gặp vấn đề.

Xác minh biến môi trường PATH có chứa đường dẫn Node.js không
Nếu bạn nghi ngờ rằng Node.js đã được cài đặt nhưng PATH bị cấu hình sai, bạn cần kiểm tra nội dung của biến môi trường này. Sử dụng lệnh sau để hiển thị tất cả các đường dẫn trong PATH: echo $PATH
Kết quả sẽ là một chuỗi dài các đường dẫn thư mục, được phân tách bởi dấu hai chấm (:), ví dụ: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin. Bây giờ, bạn cần tìm xem có đường dẫn nào trỏ đến thư mục chứa tệp thực thi của Node.js hay không. Các đường dẫn phổ biến bao gồm /usr/local/bin, /opt/node/bin, hoặc một đường dẫn phức tạp hơn nếu bạn dùng nvm, chẳng hạn như /home/your-user/.nvm/versions/node/v18.17.1/bin. Nếu bạn không thấy bất kỳ đường dẫn nào liên quan đến Node.js, đây chính là nguyên nhân gây ra lỗi.
Hướng dẫn cài đặt Node.js trên Linux/Unix
Nếu sau khi kiểm tra, bạn xác nhận rằng Node.js chưa được cài đặt trên hệ thống, bước tiếp theo là tiến hành cài đặt. Có nhiều cách để cài đặt Node.js trên các hệ điều hành Linux/Unix, nhưng hai phương pháp phổ biến và được khuyến nghị nhất là sử dụng trình quản lý gói (package manager) của hệ điều hành hoặc dùng Trình quản lý phiên bản Node (Node Version Manager – nvm).
Cài đặt Node.js qua package manager phổ biến
Đây là cách tiếp cận đơn giản và nhanh chóng, phù hợp cho những ai muốn có một phiên bản Node.js ổn định mà không cần quản lý nhiều phiên bản khác nhau.
Trên Ubuntu/Debian: Bạn có thể sử dụng apt để cài đặt. Hãy mở terminal và chạy các lệnh sau:
sudo apt update
sudo apt install nodejs npm
Lệnh đầu tiên cập nhật danh sách các gói phần mềm, lệnh thứ hai sẽ cài đặt cả Node.js (nodejs) và trình quản lý gói của nó (npm). Sau khi hoàn tất, bạn có thể kiểm tra lại bằng node -v và npm -v.
Trên CentOS/Fedora: Bạn có thể sử dụng yum hoặc dnf (trên các phiên bản mới hơn).
sudo yum install nodejs
Hoặc với dnf:
sudo dnf install nodejs
Các lệnh này sẽ cài đặt phiên bản Node.js có sẵn trong kho lưu trữ mặc định của hệ điều hành.

Cài đặt Node.js bằng Node Version Manager (nvm)
Đây là phương pháp được các lập trình viên chuyên nghiệp ưa chuộng vì tính linh hoạt vượt trội. NVM cho phép bạn cài đặt và chuyển đổi giữa nhiều phiên bản Node.js khác nhau trên cùng một hệ thống một cách dễ dàng. Điều này cực kỳ hữu ích khi bạn làm việc trên nhiều dự án yêu cầu các phiên bản Node.js khác nhau.
Các bước cài đặt và sử dụng nvm:
- Cài đặt nvm: Chạy lệnh sau trong terminal để tải về và thực thi script cài đặt của nvm.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
- Kích hoạt nvm: Đóng và mở lại terminal, hoặc chạy lệnh
source ~/.bashrcđể áp dụng các thay đổi. - Cài đặt phiên bản Node.js mong muốn: Bạn có thể cài đặt phiên bản LTS (Long Term Support) mới nhất bằng lệnh:
nvm install --lts
Hoặc cài một phiên bản cụ thể:
nvm install 18.17.1
- Sử dụng phiên bản vừa cài:
nvm use 18.17.1
NVM sẽ tự động quản lý biến môi trường PATH cho bạn, giúp tránh được các lỗi liên quan đến cấu hình thủ công.
Cách cấu hình biến môi trường PATH để hệ thống nhận biết lệnh node
Nếu bạn đã cài đặt Node.js (đặc biệt là cài đặt thủ công hoặc từ mã nguồn) mà vẫn gặp lỗi “command not found”, khả năng cao là biến môi trường PATH chưa được cập nhật để bao gồm đường dẫn đến thư mục thực thi của Node.js. Việc cấu hình PATH đúng cách sẽ “chỉ dẫn” cho shell biết nơi tìm thấy lệnh node.

Thêm đường dẫn Node.js vào PATH tạm thời và vĩnh viễn
Bạn có thể thêm đường dẫn vào PATH theo hai cách: tạm thời (chỉ có hiệu lực trong phiên terminal hiện tại) hoặc vĩnh viễn (áp dụng cho tất cả các phiên trong tương lai).
Thêm tạm thời:
Để thêm đường dẫn chỉ cho phiên làm việc hiện tại, bạn dùng lệnh export. Giả sử Node.js được cài đặt tại /opt/nodejs/bin, bạn sẽ chạy:
export PATH=/opt/nodejs/bin:$PATH
Lệnh này đặt đường dẫn của Node.js lên đầu danh sách PATH. Tuy nhiên, khi bạn đóng terminal, thay đổi này sẽ mất.
Thêm vĩnh viễn:
Để thay đổi có hiệu lực lâu dài, bạn cần chỉnh sửa file cấu hình của shell. Tùy thuộc vào shell bạn đang dùng, file này có thể là:
~/.bashrc(cho Bash shell, phổ biến nhất trên Linux)~/.bash_profile(cho Bash login shell, thường trên macOS)~/.zshrc(cho Zsh shell)
Mở file tương ứng bằng một trình soạn thảo văn bản (như nano hoặc vim): nano ~/.bashrc
Sau đó, thêm dòng sau vào cuối file:export PATH="/path/to/your/node/bin:$PATH"
Hãy thay thế /path/to/your/node/bin bằng đường dẫn thực tế đến thư mục bin của Node.js. Sau khi lưu file và thoát, thay đổi sẽ được áp dụng cho mọi phiên terminal mới.
Kiểm tra và làm mới biến môi trường sau khi cấu hình
Sau khi chỉnh sửa file cấu hình, thay đổi sẽ không tự động áp dụng cho phiên terminal hiện tại. Bạn có hai lựa chọn:
- Đóng và mở lại terminal: Đây là cách đơn giản nhất.
- Sử dụng lệnh
source: Lệnh này sẽ tải lại file cấu hình ngay lập tức mà không cần khởi động lại terminal.
source ~/.bashrc
(Hoặc source ~/.bash_profile, source ~/.zshrc tùy theo file bạn đã sửa).
Sau khi làm mới, hãy kiểm tra lại để chắc chắn rằng mọi thứ đã hoạt động. Chạy lại lệnh echo $PATH để xem đường dẫn mới đã được thêm vào hay chưa, và quan trọng nhất là chạy node -v để xác nhận hệ thống đã nhận diện được lệnh node.
Kiểm tra và xác nhận lỗi đã được khắc phục
Sau khi thực hiện các bước cài đặt hoặc cấu hình lại biến môi trường PATH, bước cuối cùng là kiểm tra và xác nhận rằng lỗi “bash: node: command not found” đã được giải quyết triệt để. Việc xác minh này đảm bảo rằng môi trường phát triển của bạn đã sẵn sàng và hoạt động ổn định, tránh gặp lại sự cố tương tự trong tương lai.

Thử chạy lại lệnh node trên terminal
Đây là bài kiểm tra quyết định. Mở một cửa sổ terminal mới (để đảm bảo tất cả các cấu hình vĩnh viễn đã được tải) và gõ lệnh kiểm tra phiên bản: node -v
Nếu terminal trả về một số phiên bản cụ thể (ví dụ: v18.17.1), xin chúc mừng, bạn đã khắc phục thành công lỗi! Lệnh node bây giờ đã được hệ thống nhận diện và sẵn sàng để sử dụng. Bạn cũng có thể thử một lệnh phức tạp hơn một chút để chắc chắn, chẳng hạn như thực thi một đoạn mã JavaScript nhỏ: node -e "console.log('Hello from AZWEB! Node.js is working.')"
Nếu bạn thấy thông điệp “Hello from AZWEB! Node.js is working.” được in ra, bạn có thể hoàn toàn yên tâm rằng môi trường Node.js của mình đang hoạt động hoàn hảo.
Sử dụng các lệnh hỗ trợ để đảm bảo môi trường Node.js ổn định
Bên cạnh lệnh node, một môi trường Node.js hoàn chỉnh còn bao gồm npm (Node Package Manager) hoặc npx. Việc kiểm tra các công cụ này cũng là một cách tốt để đảm bảo mọi thứ được cài đặt đúng cách. Hãy thử các lệnh sau:
- Kiểm tra phiên bản npm:
npm -v
Lệnh này nên trả về phiên bản của npm, ví dụ:9.6.7. - Xác định vị trí tệp thực thi:
which node
Lệnh này sẽ hiển thị đường dẫn đầy đủ đến tệp thực thinodemà shell đang sử dụng, ví dụ:/usr/local/bin/nodehoặc/home/user/.nvm/versions/node/v18.17.1/bin/node. Điều này giúp bạn xác nhận rằng hệ thống đang gọi đúng phiên bản Node.js mà bạn mong muốn.
Khi tất cả các lệnh trên đều trả về kết quả mong đợi mà không có lỗi, bạn đã chính thức khắc phục hoàn toàn sự cố và có một môi trường Node.js ổn định.
Các lưu ý và mẹo xử lý lỗi liên quan đến Node.js và bash
Việc khắc phục lỗi “command not found” đôi khi không chỉ dừng lại ở việc cài đặt và cấu hình PATH. Một số trường hợp phức tạp hơn có thể phát sinh do các vấn đề về quyền, xung đột phiên bản hoặc cách sử dụng. Dưới đây là một số lưu ý và mẹo nâng cao từ AZWEB để giúp bạn xử lý các tình huống khó khăn hơn.
Đảm bảo quyền truy cập và quyền thực thi file node
Trong một số trường hợp hiếm gặp, ngay cả khi Node.js được cài đặt và PATH được cấu hình đúng, bạn vẫn có thể gặp lỗi nếu tệp thực thi node không có quyền thực thi (execute permission). Điều này có thể xảy ra nếu các quyền của file bị thay đổi do nhầm lẫn. Bạn có thể kiểm tra quyền bằng lệnh ls -l $(which node). Kết quả trả về nên có chữ x (execute) trong chuỗi quyền. Nếu không có, bạn cần cấp lại quyền thực thi bằng lệnh chmod: sudo chmod +x $(which node) Lệnh này sẽ cấp quyền thực thi cho tệp node, cho phép hệ thống chạy nó như một chương trình.

Kiểm tra phiên bản node trùng nhau hoặc lỗi xung đột PATH
Một vấn đề phổ biến khác là sự tồn tại của nhiều phiên bản Node.js được cài đặt bằng các phương pháp khác nhau (ví dụ: một phiên bản từ apt và một phiên bản khác từ nvm). Điều này có thể gây ra xung đột trong biến PATH. Shell sẽ chỉ thực thi phiên bản đầu tiên mà nó tìm thấy trong PATH. Để chẩn đoán, hãy sử dụng lệnh which -a node để liệt kê tất cả các vị trí của tệp thực thi node. Nếu bạn thấy nhiều hơn một kết quả, bạn nên gỡ bỏ các phiên bản không mong muốn và chỉ giữ lại một phương pháp cài đặt duy nhất (khuyến nghị dùng nvm) để đảm bảo tính nhất quán.
Sử dụng công cụ quản lý phiên bản Node.js để tránh lỗi phổ biến
Cách tốt nhất để phòng tránh các lỗi liên quan đến PATH và phiên bản là sử dụng một công cụ quản lý phiên bản chuyên dụng như KVM là gì hoặc nvm (Node Version Manager) hoặc asdf. Các công cụ này được thiết kế để tự động quản lý các phiên bản Node.js và cấu hình PATH một cách chính xác mỗi khi bạn chuyển đổi giữa chúng. Bằng cách sử dụng nvm, bạn không cần phải can thiệp thủ công vào các file .bashrc và giảm thiểu nguy cơ gây ra lỗi cấu hình. Đây là phương pháp được cộng đồng lập trình viên tin dùng và khuyến nghị.
Các vấn đề thường gặp và cách khắc phục
Ngay cả sau khi đã làm theo hướng dẫn, một vài tình huống đặc biệt vẫn có thể xảy ra. Dưới đây là hai trong số các vấn đề thường gặp nhất liên quan đến lỗi “node not found” và cách xử lý chúng một cách hiệu quả.
Lỗi “node not found” sau khi cài đặt Node.js thành công
Bạn vừa hoàn thành các bước cài đặt Node.js bằng apt, yum hoặc nvm. Mọi thứ dường như đã thành công, không có thông báo lỗi nào. Nhưng khi bạn gõ node -v, bạn lại nhận được thông báo “command not found”.
Nguyên nhân: Nguyên nhân phổ biến nhất cho vấn đề này là phiên terminal hiện tại của bạn chưa được cập nhật với các thay đổi về môi trường. Khi bạn cài đặt phần mềm mới hoặc thay đổi các file cấu hình shell (.bashrc, .zshrc), những thay đổi đó không tự động áp dụng cho các phiên đã mở.
Cách khắc phục:
- Cách đơn giản nhất: Đóng hoàn toàn cửa sổ terminal hiện tại và mở một cửa sổ mới. Phiên mới sẽ tải lại tất cả các file cấu hình và nhận biết được cài đặt Node.js mới.
- Cách nhanh hơn: Nếu bạn không muốn đóng terminal, hãy chạy lệnh
sourceđể tải lại file cấu hình một cách thủ công. Ví dụ, nếu bạn dùng Bash, hãy chạy:source ~/.bashrcSau khi thực hiện một trong hai cách trên, hãy thử lại lệnhnode -v.

Lệnh node vẫn không hoạt động khi chạy script bash tự động
Bạn đã thiết lập một cron job hoặc một script bash tự động để thực thi một tác vụ Node.js. Lệnh node chạy hoàn hảo khi bạn gõ trực tiếp trong terminal, nhưng script tự động lại báo lỗi “node: command not found”.
Nguyên nhân: Các môi trường thực thi không tương tác (non-interactive shells), như cron job, thường không tải các file cấu hình như .bashrc hoặc .bash_profile. Do đó, biến PATH trong môi trường của script rất tối giản và không chứa đường dẫn đến Node.js, đặc biệt là khi Node.js được cài đặt qua nvm.
Cách khắc phục:
- Sử dụng đường dẫn đầy đủ: Thay vì chỉ gọi
node, hãy sử dụng đường dẫn tuyệt đối đến tệp thực thi. Bạn có thể tìm đường dẫn này bằng lệnhwhich node. Sau đó, trong script của bạn, hãy viết:/home/your-user/.nvm/versions/node/v18.17.1/bin/node /path/to/your/script.js - Nạp môi trường trong script: Thêm các dòng sau vào đầu script bash của bạn để nạp môi trường của nvm trước khi chạy lệnh
node:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
node /path/to/your/script.js
Cách này đảm bảo rằng môi trường của script sẽ giống với môi trường terminal tương tác của bạn.
Best Practices
Để tránh gặp phải lỗi “bash: node: command not found” và duy trì một môi trường phát triển lành mạnh, việc tuân thủ các quy tắc và thực hành tốt nhất là vô cùng quan trọng. AZWEB đã tổng hợp những lời khuyên hàng đầu giúp bạn quản lý Node.js một cách hiệu quả và giảm thiểu rủi ro phát sinh lỗi.
- Luôn kiểm tra PATH sau khi cài đặt phần mềm mới: Bất cứ khi nào bạn cài đặt một công cụ dòng lệnh mới, hãy tập thói quen kiểm tra biến môi trường
PATHbằng lệnhecho $PATHvà xác nhận rằng đường dẫn đến công cụ đó đã được thêm vào. - Sử dụng nvm để dễ dàng quản lý các phiên bản Node.js khác nhau: Thay vì cài đặt Node.js trực tiếp thông qua trình quản lý gói của hệ thống, hãy ưu tiên sử dụng Trình quản lý phiên bản Node (nvm). Nvm không chỉ giúp bạn dễ dàng cài đặt, gỡ bỏ và chuyển đổi giữa các phiên bản Node.js mà còn tự động xử lý việc cấu hình
PATH, giúp bạn tránh được hầu hết các lỗi phổ biến. - Tránh sửa đổi PATH trực tiếp nếu không hiểu rõ ảnh hưởng: Biến môi trường
PATHrất quan trọng đối với hoạt động của hệ thống. Chỉ nên thêm đường dẫn mới vào cuối hoặc đầu biến, và tránh xóa bỏ các đường dẫn hệ thống mặc định như/binhay/usr/binnếu không chắc chắn về hậu quả. - Kiểm tra quyền truy cập và file thực thi node ngay khi gặp lỗi: Nếu
PATHđã đúng mà lỗi vẫn xảy ra, hãy nghĩ ngay đến quyền của tệp. Sử dụngls -l $(which node)để kiểm tra vàchmod +xđể sửa nếu cần. - Hạn chế cài đặt Node.js bằng nhiều phương thức khác nhau gây xung đột: Việc cài đặt Node.js từ nhiều nguồn (ví dụ:
apt,snap, và nvm cùng lúc) là nguyên nhân hàng đầu gây ra xung đột và khó khăn trong việc gỡ rối. Hãy chọn một phương pháp duy nhất (khuyến nghị là nvm) và tuân thủ nó.

Kết luận
Lỗi “bash: node: command not found” tuy phổ biến nhưng hoàn toàn có thể được khắc phục một cách dễ dàng nếu bạn hiểu rõ nguyên nhân gốc rễ của nó. Vấn đề thường chỉ xoay quanh hai khả năng chính: Node.js chưa được cài đặt trên hệ thống, hoặc biến môi trường PATH chưa được cấu hình đúng để “chỉ đường” cho shell đến nơi chứa tệp thực thi của Node.js.
Qua bài viết này, AZWEB đã hướng dẫn bạn từng bước chi tiết, từ việc kiểm tra tình trạng cài đặt, cung cấp các lệnh cài đặt chính xác cho nhiều hệ điều hành, cho đến cách cấu hình biến PATH một cách an toàn và hiệu quả. Chúng tôi đặc biệt khuyến khích bạn sử dụng các công cụ quản lý phiên bản như nvm để đơn giản hóa quy trình và tránh các lỗi cấu hình không đáng có trong tương lai. Bằng cách áp dụng những hướng dẫn và thực hành tốt nhất được chia sẻ, bạn sẽ không chỉ giải quyết được sự cố trước mắt mà còn xây dựng được một môi trường phát triển Node.js ổn định và chuyên nghiệp hơn.