Как полностью удалить Node.js и переустановить заново на Mac OS X
Привет, коллеги! Я новичок в JavaScript и Node.js. Начал изучать разработку на MacBook, но, похоже, напортачил с установкой Node.js.
Сначала я установил Node.js через официальный инсталлятор с сайта. Потом, когда нужно было обновить версию, я просто скачал новый инсталлятор и запустил его поверх старой установки. Теперь у меня полная каша: команда node -v показывает одну версию, npm -v — другую, а глобальные пакеты, которые я устанавливал, то работают, то нет.
Пытался удалить Node.js вручную, удалял папки из /usr/local/lib/node_modules, но, кажется, только сделал хуже. Теперь npm вообще перестал работать с ошибками вроде Error: Cannot find module.
Я хочу полностью очистить систему от всех следов Node.js и npm, включая:
- Бинарники
nodeиnpm - Глобальные пакеты
- Кэш npm
- Все конфигурационные файлы
После этого я хочу установить Node.js с нуля, но уже правильно, чтобы в будущем не было таких проблем. Как это сделать правильно на macOS?
// Пример проблемы:
$ node -v
v14.17.0
$ npm -v
6.14.13
// После попытки удаления:
$ npm install -g create-react-app
Error: Cannot find module 'semver'
Буду благодарен за подробную инструкцию!
<<Полное удаление Node.js и npm на macOS
Проблема, с которой вы столкнулись, очень распространена среди начинающих разработчиков. "Грязная" установка поверх старой версии приводит к конфликтам модулей и бинарников. Вот проверенный способ полного удаления с последующей чистой установкой.
Шаг 1: Удаление всех бинарников и модулей
Запустите в терминале следующие команды. Они удалят все файлы Node.js, npm и глобальные пакеты:
# Удаляем бинарники
sudo rm -rf /usr/local/bin/node
sudo rm -rf /usr/local/bin/npm
sudo rm -rf /usr/local/bin/npx
# Удаляем глобальные модули и библиотеки
sudo rm -rf /usr/local/lib/node_modules
sudo rm -rf /usr/local/lib/node
# Удаляем конфигурационные файлы пользователя
rm -rf ~/.npm
rm -rf ~/.node-gyp
rm -rf ~/.node_repl_history
# Удаляем кэш и временные файлы
sudo rm -rf /usr/local/share/man/man1/node*
sudo rm -rf /usr/local/share/man/man1/npm*
sudo rm -rf /usr/local/share/systemtap/tapset/node.stp
sudo rm -rf /opt/local/bin/node
sudo rm -rf /opt/local/bin/npm
sudo rm -rf /opt/local/lib/node_modules
Важно: Команды с sudo требуют пароль администратора. Будьте внимательны, чтобы не удалить лишнего.
Шаг 2: Проверка, что всё удалено
После выполнения команд проверьте, что Node.js и npm больше не доступны:
which node
# Должно вернуть: node not found
which npm
# Должно вернуть: npm not found
node -v
# Должно вернуть: -bash: node: command not found
Шаг 3: Установка Node.js через nvm (рекомендуемый способ)
Вместо установки через официальный инсталлятор, я рекомендую использовать nvm (Node Version Manager). Это позволит легко переключаться между версиями и избежать проблем в будущем:
# Устанавливаем nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# Перезапускаем терминал или выполняем:
source ~/.zshrc # или source ~/.bash_profile
# Устанавливаем последнюю стабильную версию Node.js
nvm install --lts
# Проверяем установку
node -v
npm -v
Шаг 4: Настройка глобальных пакетов
Теперь вы можете устанавливать глобальные пакеты, и они будут работать корректно:
npm install -g create-react-app
npm install -g nodemon
npm install -g typescript
Почему это работает?
Проблема была в том, что при установке поверх старой версии, бинарники и модули конфликтовали. nvm хранит каждую версию Node.js в отдельной папке ~/.nvm и просто подменяет пути в переменной окружения PATH. Это гарантирует чистоту установки и возможность легко откатиться на другую версию.
После выполнения всех шагов, ваша система будет чиста от старых файлов Node.js, и вы сможете работать без ошибок. В будущем для обновления Node.js достаточно выполнить nvm install --lts, а для смены версии — nvm use 18.
Альтернативный способ: использование Homebrew
Если вы предпочитаете использовать пакетный менеджер Homebrew, вот альтернативный подход, который также эффективен:
# Сначала удаляем Node.js, установленный через Homebrew
brew uninstall --ignore-dependencies node
brew uninstall --force node
# Очищаем кэш и временные файлы
brew cleanup
# Удаляем остатки вручную
sudo rm -rf /usr/local/lib/node_modules
sudo rm -rf /usr/local/include/node
sudo rm -rf /usr/local/lib/node
rm -rf ~/.npm
После этого устанавливаем Node.js заново через Homebrew:
# Обновляем Homebrew
brew update
# Устанавливаем Node.js
brew install node
# Проверяем
node -v
npm -v
Плюсы этого метода:
- Homebrew сам управляет зависимостями
- Легко обновлять через
brew upgrade node - Не требует дополнительных менеджеров версий
Минусы:
- Сложнее переключаться между версиями
- Может быть конфликт с системными библиотеками macOS
Оба метода (nvm и Homebrew) решают вашу проблему. Я рекомендую nvm для разработчиков, которые часто работают с разными проектами, требующими разных версий Node.js. Если же вам нужна одна стабильная версия, Homebrew — отличный выбор.