Как полностью удалить Node.js и переустановить с самого начала (Mac OS X)
Моя версия узла всегда v0.6.1-pre, даже после того, как я установил brew node и NVM установил v0.6.19.
Моя версия узла:
node -v
v0.6.1-pre
NVM говорит следующее (после того, как я впервые установил версию узла в одном терминале bash):
nvm ls
v0.6.19
current: v0.6.19
Но когда я перезапускаю bash, вот что я вижу:
nvm ls
v0.6.19
current: v0.6.1-pre
default -> 0.6.19 (-> v0.6.19)
Так где же этот фантомный узел версии 0.6.1-pre и как от него избавиться? Я пытаюсь установить библиотеки через NPM, чтобы я мог работать над проектом.
Я пытался использовать BREW для обновления до NVM, используя "brew update" и "brew install node". Я попытался удалить каталог "node" в моем /usr/local/include и "node" и "node_modules" в моем "/usr/local/lib". Я попытался удалить npm и переустановить его, следуя этим инструкциям.
Все это потому, что я пытался обновить старую версию узла, чтобы установить библиотеку "zipstream". Теперь в моем каталоге пользователей есть папки, и версия узла STILL не обновлена, хотя NVM говорит, что она использует 0.6.19.
В идеале я хотел бы удалить nodejs, npm и nvm и просто переустановить все это с нуля в моей системе.
35 ответов
Видимо, был /Users/myusername/local
папка, которая содержала include
с node
а также lib
с node
а также node_modules
, Как и почему это было создано вместо моего /usr/local
Папка, я не знаю.
Удаление этих локальных ссылок исправило фантом v0.6.1-pre. Если у кого-то есть объяснение, я выберу это как правильный ответ.
РЕДАКТИРОВАТЬ:
Возможно, вам также потребуется выполнить дополнительные инструкции:
sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}
что эквивалентно (так же, как и выше)...
sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* /usr/local/lib/dtrace/node.d ~/.npm ~/.node-gyp
или (так же, как и выше) сломан...
Чтобы полностью удалить узел + npm, нужно сделать следующее:
- перейдите в / usr / local / lib и удалите любой узел и node_modules
- перейдите в / usr / local / include и удалите любой каталог node и node_modules
- если вы установили с узлом установки brew, запустите узел удаления brew в своем терминале
- проверьте домашний каталог на наличие локальных папок, папок lib или include и удалите оттуда любые узлы или модули_узлов
- перейдите в / usr / local / bin и удалите любой исполняемый файл узла
Вам также может понадобиться:
sudo rm -rf /opt/local/bin/node /opt/local/include/node /opt/local/lib/node_modules
sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node.1 /usr/local/lib/dtrace/node.d
Кроме того, NVM изменяет переменную PATH в $HOME/.bashrc
, который должен быть возвращен вручную.
Затем загрузите nvm и следуйте инструкциям по установке узла. Я полагаю, что последние версии узла поставляются с npm, но вы также можете переустановить его.
Для пользователей Brew OSX:
Удалять:
brew uninstall node;
# or `brew uninstall --force node` which removes all versions
brew prune;
rm -f /usr/local/bin/npm /usr/local/lib/dtrace/node.d;
rm -rf ~/.npm;
Установить:
brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules' # <--- add this ~/.bashrc
Вы можете запустить brew info node
для получения более подробной информации об установке вашего узла.
рассмотреть возможность использования NVM вместо варки
NVM (менеджер версий узлов) - это портативное решение для управления несколькими версиями узлов
https://github.com/creationix/nvm
> nvm uninstall v4.1.0
> nvm install v8.1.2
> nvm use v8.1.2
> nvm list
v4.2.0
v5.8.0
v6.11.0
-> v8.1.2
system
- Вы можете использовать это с AVN для автоматического переключения версий при переходе между разными проектами с разными зависимостями узлов.
Я знаю, что этот пост немного устарел, но просто хотел поделиться командами, которые работали для меня в Терминале при удалении Node.js.
lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom | while read f; do sudo rm /usr/local/${f}; done
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
ОБНОВИТЬ: 23 SEP 2016
Если вы боитесь запускать эти команды...
Благодаря jguix
за this quick tutorial
,
Сначала создайте промежуточный файл:
lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom >> ~/filelist.txt
Вручную просмотрите ваш файл (расположенный в вашем Home
папка)
~/filelist.txt
Затем удалите файлы:
cat ~/filelist.txt | while read f; do sudo rm /usr/local/${f}; done
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
Для 10.10.5 и выше
Спасибо Lenar Hoyt
Gist Комментарий Источник: gistcomment-1572198
Оригинальный Гист: TonyMtz/d75101d9bdf764c890ef
lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom | while read f; do sudo rm /usr/local/${f}; done
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
https://stackabuse.com/how-to-uninstall-node-js-from-mac-osx/
Выполните следующие команды, чтобы полностью удалить узел из системы в MACOS
sudo rm -rf ~/.npm ~/.nvm ~/node_modules ~/.node-gyp ~/.npmrc ~/.node_repl_history
sudo rm -rf /usr/local/bin/npm /usr/local/bin/node-debug /usr/local/bin/node /usr/local/bin/node-gyp
sudo rm -rf /usr/local/share/man/man1/node* /usr/local/share/man/man1/npm*
sudo rm -rf /usr/local/include/node /usr/local/include/node_modules
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /usr/local/lib/dtrace/node.d
sudo rm -rf /opt/local/include/node /opt/local/bin/node /opt/local/lib/node
sudo rm -rf /usr/local/share/doc/node
sudo rm -rf /usr/local/share/systemtap/tapset/node.stp
brew uninstall node
brew doctor
brew cleanup --prune-prefix
После этого я предлагаю использовать следующую команду для установки узла с помощью nvmcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
На Mavericks я устанавливаю его с узла pkg (с сайта nodejs) и удаляю его, чтобы переустановить с помощью brew. Я запускаю только 4 команды в терминале:
sudo rm -rf /usr/local/lib/node_modules/npm/
brew uninstall node
brew doctor
brew prune
Если все еще существует установка узла, повторите шаг 2. После того, как все в порядке, я устанавливаю, используя brew install node
Я обобщил существующие ответы и убедился, что Node js ПОЛНОСТЬЮ УДАЛЕН вместе с NPM.
brew uninstall node
which node
sudo rm -rf /usr/local/bin/node
sudo rm -rf /usr/local/lib/node_modules/npm/
brew doctor
brew cleanup --prune-prefix
Строки для копирования в терминал:
brew uninstall node;
which node;
sudo rm -rf /usr/local/bin/node;
sudo rm -rf /usr/local/lib/node_modules/npm/;
brew doctor;
brew cleanup --prune-prefix;
Первый:
lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom | while read f; do sudo rm /usr/local/${f}; done sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
Напомним, что лучший способ (я обнаружил) полностью удалить узел + npm - это сделать следующее:
идти к
/usr/local/lib
и удалите любой узел и node_modulescd /usr/local/lib sudo rm -rf node*
идти к
/usr/local/include
и удалите любой каталог node и node_modulescd /usr/local/include sudo rm -rf node*
если вы установили с
brew install node
затем бегиbrew uninstall node
в вашем терминалеbrew uninstall node
проверьте домашний каталог на наличие папок "local", "lib" или "include" и удалите оттуда любые "node" или "node_modules".
перейдите в /usr/local/bin и удалите любой исполняемый файл узла
cd /usr/local/bin sudo rm -rf /usr/local/bin/npm ls -las
Возможно, вам также потребуется выполнить дополнительные инструкции:
sudo rm -rf /usr/local/share/man/man1/node.1 sudo rm -rf /usr/local/lib/dtrace/node.d sudo rm -rf ~/.npm
Источник: ТониМц
Полное удаление Node.js в macOS Monterey версии 12.0.1
Чтобы проверить текущую версию узла, установленную в вашей системе:
# node -v
# v14.15.0
Введите приведенные ниже команды, чтобы удалить Node из вашей системы:
# cd /usr/local/include
# sudo rm -R node
# cd ../lib
# sudo rm -R node_modules
# cd ../bin
# sudo rm -R node
чтобы убедиться, что этот узел больше не существует
# node -v
# -bash: node: command not found
Установите Node.js на macOS Monterey версии 12.0.1.
- Загрузите LTS-версию узла с официального сайта.
Дважды щелкните установочный пакет node-v16.13.1.pkg и продолжите с настройками по умолчанию.
Тип
node -v
в вашем терминале, чтобы распечатать текущую установленную версию узла:v16.13.1
&npm -v
чтобы распечатать текущую версию npm, установленную на вашем компьютере:8.1.2
Понизить уровень до 0.10.36
sudo npm cache clean -f
sudo npm install -g n
sudo n 0.10.36
обновить узел до стабильного v
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
Я не уверен, что это потому, что у меня была старая версия (4.4.5), или потому, что я использовал официальный установщик, но большинство файлов, на которые есть ссылки в других ответах, не существовало в моей системе. Мне осталось только удалить следующее:
~/.node-gyp
~/.node_repl_history
/usr/local/bin/node
/usr/local/bin/npm
/usr/local/include/node
/usr/local/lib/dtrace/node.d
/usr/local/lib/node_modules
/usr/local/share/doc/node
/usr/local/share/man/man1/node.1
/usr/local/share/systemtap/tapset/node.stp
Я решил сохранить ~/.npm
потому что я планировал переустановить Node с Homebrew.
Полное удаление Nodejs в macOS Big Sur версии 11.2.3 (20D91)
Вступление
Первое первым,
Хочу сказать спасибо, что поделились этим @tonymtz.
Моя система работает
macOS Big Sur version 11.2.3 (20D91)
с установленным с официального сайта.
Я пытался полностью удалить
nodejs
на моем MacBook Pro, чтобы переустановить его с
homebrew
менеджер пакетов, используя:
lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom | while read f; do sudo rm /usr/local/${f}; done
но я столкнулся вопрос , как Ahtesham Shah упоминается в Johel Alvarez «S ответ :
При срабатывании первой команды получаем:
can't open /var/db/receipts/org.nodejs.pkg.bom: No such file or directory **** Can't open /var/db/receipts/org.nodejs.pkg.bom.
Пожалуйста, помогите - Ахтешам Шах 20 июн.
Я погрузился в трюкомисходный пост, на который ссылается @JohelAlvarez, прочитал все комментарии и нашел этот комментарий от @e2tha-e:
@tonymtz В моей установке Node v4.0.0 на Yosemite 10.10.5 первая строка должна была быть
lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom | while read f; do sudo rm /usr/local/${f}; done
Другое имя файла от Иначе, это сработало как шарм!
@e2tha-e был прав, на
macOS Big Sur version 11.2.3 (20D91
) с участием
nodejs Latest Current Version: 15.14.0 (includes npm 7.7.6)
установлен с официального сайта, имя файла не
org.nodejs.pkg.bom
но
org.nodejs.node.pkg.bom
.
Вы можете проверить это, когда будете.
Решение для установки с официального сайта Nodejs
С помощью предпочитаемого вами терминала полностью удалите Nodejs из вашей системы следующим образом:
Опция 1-
lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom | while read f; do sudo rm /usr/local/${f}; done
-
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
Перейти к
/var/db/receipts/
и удалите все
org.nodejs.*
-
cd /var/db/receipts/ && ls -la
-
sudo rm -rf org.nodejs.*
Перейти к
/usr/local/lib
и удалите любые и
-
cd /usr/local/lib && ls -la
Перейти к
/usr/local/include
и удалите любые и
node_modules
каталог
-
cd /usr/local/include && ls -la
-
sudo rm -rf node*
Проверьте свои
$HOME
каталог для любых папок "local", "lib" или "include" и удалите оттуда все "node" или "node_modules".
Перейти к
/usr/local/bin
и удалите любой исполняемый файл узла
-
cd /usr/local/bin && ls -la
-
sudo rm -rf /usr/local/bin/npm
-
sudo rm -rf /usr/local/bin/node
Возможно, вам также понадобится сделать это:
-
sudo rm -rf /usr/local/share/man/man1/node.1
-
sudo rm -rf /usr/local/lib/dtrace/node.d
-
sudo rm -rf ~/.npm
После этого вы можете проверить, есть ли еще
node
в вашей системе с
which node
или найдите все вхождения узла в вашей системе.
Советы
- Найдите файлы узлов с помощью
find / -name 'node' | sed -E 's|/[^/]+$||' |sort -u
- Прежде чем запускать общий код другими, проверьте свои каталоги, чтобы убедиться, что вы написали правильное имя файла.
🖖
Шаги по удалению NodeJS:
Для MacOS Monterey с чипом M1 перейдите по ссылке ниже, чтобы полностью удалить узел из системы. Я пробовал несколько способов, но этот, наконец, сработал.
Удалите NodeJS и NPM с Mac M1 Monterey
Кроме того, выполните следующие команды в конце, чтобы удалить каталоги, связанные с узлом, из папки bin.
sudo rm -R node-sass
sudo rm -R npm
sudo rm -R npx
Чтобы убедиться, что узел удален:
node --version
Он должен сказать, что команда не найдена.
Шаги по установке NodeJS:
Включите терминал Россета на вашем Mac с чипом М1.Как включить терминал Россета
Используйте nvm (Node Version Manager) для установки NodeJS на свой компьютер. Почему нвм??Потому что вы можете запускать несколько версий NodeJS (вы можете работать как с новым приложением, так и с устаревшим).
Как установить несколько версий NodeJS с помощью nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
Создайте файл .zshrc, если он не существует.
touch ~/.zshrc
Установите узел с помощью nvm.
nvm install node # "node" is an alias for the latest version
nvm install 14.7.0 # or 16.3.0, 12.22.1, etc
Чтобы проверить количество доступных версий NodeJS:
nvm ls
После
brew uninstall node
Я должен был знать, какой узел
which node
затем удали это
rm -rf /usr/local/bin/node
Удалить узел и / или узел_модули из /usr/local/lib
ex code: cd /usr/local/lib sudo rm -rf node sudo rm -rf node_modules
Удалить узел и / или узел_модули из / usr / local / include
- Удалить узел, узел-отладку и узел-gyp из /usr/local/bin
- Удалите.npmrc из вашего домашнего каталога (это ваши настройки npm, не удаляйте это, если вы планируете переустановить Node прямо сейчас)
- Удалить.npm из вашего домашнего каталога
- Удалите.node-gyp из вашего домашнего каталога
- Удалите.node_repl_history из вашего домашнего каталога
- Удалить узел * из /usr/local/share/man/man1/
- Удалить npm* из /usr/local/share/man/man1/
- Удалить node.d из /usr/local/lib/dtrace/
- Удалить узел из /usr/local/opt/local/bin/
- Удалить узел из / usr / local / opt / local / include /
- Удалите node_modules из /usr/local/opt/local/lib/
- Удалить узел из / usr / local / share / doc /
- Удалить файл node.stp из / usr / local / share / systemtap / tapset /
$ node --version
v11.1.0
$ nvm деактивировать
$nvm uninstall v11.1.0
Работал для меня
Если вы уже установили nvm, выполните следующие команды
nvm deactivate
- Это удалит /.nvm/*/bin из $ PATHnvm list
- перечислить все версии узлов, установленных в системеnvm uninstall <version>
Вы можете указать все версии, которые хотите удалить.
Это всегда хорошо, что вы устанавливаете узел, используя nvm
и удалить используя nvm
скорее, чем brew
,
Это решение сработало для меня.
Дополнительные команды
which node
знать путь узла, установленного в вашей системе. Вы можете использовать этот каталог для удаления узла вручную. Тогда вам может понадобиться настроить файл PATH соответствующим образом.
Продолжая удивительный ответ Доминика Танкреди, я свернул его в пакет bash и автономный скрипт. Если вы уже используете "Back Package Manager" под названием bpkg, вы можете установить скрипт, выполнив:
bpkg install -g brock/node-reinstall
Или вы можете взглянуть на скрипт на Github в http://github.com/brock/node-reinstall. Сценарий позволяет вам переустановить узел, используя nvm или nave, и указать версию узла в качестве значения по умолчанию.
В дополнение к основному ответу мне нужно было удалить все экземпляры npm, найденные в:
rm -rf /usr/local/share/man/man1/npm*
Лучше всего скачать установочный пакет: .pkg на Mac. Предпочитаю последнюю стабильную версию.
Вот ссылка: Node.js
Этот пакет в конечном итоге перезапишет предыдущую версию и соответственно установит переменные среды. Просто запустите установщик, и все будет сделано в несколько кликов.
Может быть, вам нужно сделать
hash -r
это помогает с проблемой символической ссылки
$ node -v
$ bash: /opt/local/bin/node: No such file or directory
Я столкнулся с проблемой при удалении Node.js на моем Mac. У меня было странное поведение, как npm
все еще их даже после удаления со всем этим.
Это потому, что у меня была старая установка с помощью macport. Так что вы также должны удалить его, используя порт:
sudo port uninstall nodejs
Может потребоваться установить много разных версий Node.js, поэтому удалите их все (одну за другой).
Вы можете клонировать https://github.com/brock/node-reinstall и запустить простую команду, указанную в репозитории. После этого просто перезагрузите систему.
Это самый простой метод, который также работал для меня.
В дополнение к ответам, объясняющим очистку и установку через homebrew, я обнаружил, что сам homebrew четко указывает на конфликты символических ссылок.
К сожалению, он предоставляет их один за другим по мере их обнаружения, поэтому это немного трудоемко, но, похоже, он обнаруживает все конфликты, и это был единственный способ получить чистую установку с помощью homebrew.
По сути, это процесс:
- используйте homebrew для удаления узла
- чистый домашний пивовар
- используйте homebrew для установки узла и отметьте все помеченные конфликтующие файлы
- удалить файл с конфликтом флагов (или весь каталог, если это каталог 'node')
- переходите к шагу 1, пока не получите чистую установку
Вот вывод экрана с последних шагов моей установки - вы можете видеть, что это приводит к чистой установке (в конечном итоге...):
computer1:DevResources user1$ brew install node
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/node-13.1.0.mojave.bottle.tar.gz
Already downloaded: /Users/user1/Library/Caches/Homebrew/downloads/da904f1fdab6f6b2243a810b685e67b29a642c6e945f086e0022323a37fe85f9--node-13.1.0.mojave.bottle.tar.gz
==> Pouring node-13.1.0.mojave.bottle.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink share/systemtap/tapset/node.stp
Target /usr/local/share/systemtap/tapset/node.stp
already exists. You may want to remove it:
rm '/usr/local/share/systemtap/tapset/node.stp'
To force the link and overwrite all conflicting files:
brew link --overwrite node
To list all files that would be deleted:
brew link --overwrite --dry-run node
Possible conflicting files are:
/usr/local/share/systemtap/tapset/node.stp
/usr/local/lib/dtrace/node.d
==> Caveats
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
==> Summary
/usr/local/Cellar/node/13.1.0: 4,591 files, 54.2MB
computer1:DevResources user1$ rm '/usr/local/share/systemtap/tapset/node.stp'
computer1:DevResources user1$ brew uninstall node
Uninstalling /usr/local/Cellar/node/13.1.0... (4,591 files, 54.2MB)
computer1:DevResources user1$ brew cleanup
computer1:DevResources user1$ brew install node
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/node-13.1.0.mojave.bottle.tar.gz
Already downloaded: /Users/user1/Library/Caches/Homebrew/downloads/da904f1fdab6f6b2243a810b685e67b29a642c6e945f086e0022323a37fe85f9--node-13.1.0.mojave.bottle.tar.gz
==> Pouring node-13.1.0.mojave.bottle.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink lib/dtrace/node.d
Target /usr/local/lib/dtrace/node.d
already exists. You may want to remove it:
rm '/usr/local/lib/dtrace/node.d'
To force the link and overwrite all conflicting files:
brew link --overwrite node
To list all files that would be deleted:
brew link --overwrite --dry-run node
Possible conflicting files are:
/usr/local/lib/dtrace/node.d
==> Caveats
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
==> Summary
/usr/local/Cellar/node/13.1.0: 4,591 files, 54.2MB
computer1:DevResources user1$ rm '/usr/local/lib/dtrace/node.d'
computer1:DevResources user1$
computer1:DevResources user1$ brew uninstall node
Uninstalling /usr/local/Cellar/node/13.1.0... (4,591 files, 54.2MB)
computer1:DevResources user1$ brew cleanup
computer1:DevResources user1$ brew install node
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/node-13.1.0.mojave.bottle.tar.gz
Already downloaded: /Users/user1/Library/Caches/Homebrew/downloads/da904f1fdab6f6b2243a810b685e67b29a642c6e945f086e0022323a37fe85f9--node-13.1.0.mojave.bottle.tar.gz
==> Pouring node-13.1.0.mojave.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
==> Summary
/usr/local/Cellar/node/13.1.0: 4,591 files, 54.2MB
computer1:DevResources user1$ node -v
v13.1.0
Я установил Node.js из исходного кода, загруженного из репозитория git. Я установил с:
./configure
$ make
$ sudo make install
Поскольку файл make поддерживает это, я могу сделать:
$ sudo make uninstall
Ответ @lfender6445 отлично работал для меня, чтобы удалить
Теперь при переустановке у меня возникли проблемы с установкой последней версии вместо самой стабильной, поэтому для установки конкретной версии узла вы должны сделать:
brew install node@10 // 10 is the version I want
brew link node@10
Прежде всего, вам нужно деактивировать узел: (mac) после установки новой версии узла.
nvm deactivate
Это удалено /Users/user_name/.nvm/*/bin из $PATH
И после этого узел был обновлен
node --version
v10.9.0
Докер - альтернативный подход
Docker - это своего рода сверхбыстрая виртуальная машина, которую можно использовать для запуска таких инструментов, как node (вместо этого устанавливайте их непосредственно на mac-os). Преимущества для этого следующие:
все вещи (файлы узлов 'milions') устанавливаются внутри образа / контейнера докера (они инкапсулированы в несколько файлов внутреннего докера)
вы можете сопоставить свой каталог Mac с проектом с контейнером докера и иметь доступ к узлу, но вне докера система mac-os даже не знает, что узел установлен. Таким образом, вы получаете своего рода "виртуальную" консоль с доступными командами узла, которая может работать с реальными файлами.
вы можете легко убить узел, найдя его с помощью
docker ps
и убитьdocker rm -f name_or_num
вы можете легко удалить образ / контейнеры докеров с помощью одной команды
docker rmi ...
и получите свободное место - и установите его снова, запустив скрипт (ниже)ваш узел инкапсулирован внутри докера и не имеет доступа ко всей системе - только к папкам, которые вы ему сопоставляете
вы можете запускать службы узлов и легко отображать их порт на порт Mac и иметь доступ к нему из веб-браузера
вы можете запускать несколько версий узлов одновременно
in similar way you can install other tools like (in many versions in same time): php, databases, redis etc. - inside docker without any interaction with mac-os (which not notice such software at all). E.g. you can run at the same time 3 mysql db with different versions and 3 php application with different php version... - so you can have many tools but clean system
TEAM WORK: such enviroment can be easily cloned into other machines (and even to windows/linux systems - with some modifications) and provide identical docker-level environment - so you can easily set up and reuse you scripts/dockerfiles, and setup environment for new team member in very fast way (he just need to install docker and create similar folder-structure and get copy of scripts - thats all). I work this way for 2 year and with my team - and we are very happy
Instruction
Install docker using e.g. this instructions
Prepare 'special' directory for work e.g. my directory is
/Users/kamil/work
(I will use this directory further - but it can be arbitrary) - this directory will be 'interface' between docker containers and your mac file ststem. Inside this dir create following dir structure:/Users/kamil/work/code
- here you put your projects with code/Users/kamil/work/tools
/Users/kamil/work/tools/docker-data
- here we map containers output data like logs (or database files if someone ouse db etc.)/Users/kamil/work/tools/docker
/Users/kamil/work/tools/docker/node-cmd
- here we put docker node scriptsinside
tools
create file.env
which will contain in one place global-paths used in other scriptstoolspath="/Users/kamil/work/tools" codepath="/Users/kamil/work/code" workpath=/Users/kamil/work
innside dir
../node-cmd
create filedockerfile
with following content# default /var/www/html (mapped to .../code folder with projects) FROM node WORKDIR /work # Additional arbitrary tools (ng, gulp, bower) RUN npm install -g n @angular/cli bower gulp grunt CMD while true; do sleep 10000; done # below ports are arbitrary EXPOSE 3002 3003 3004 4200
innside dir
../node-cmd
create filerun-container
with following content (this file should be executable e.g. bychmod +x run-container
) - (notice how we map port-s and directories form external 'world' to internal docker filesystem)set -e cd -- "$(dirname "$0")" # this script dir (not set on doubleclick) source ../../.env toolsdir=$toolspath/docker-data workdir=$workpath if [ ! "$(docker ps | grep node-cmd)" ] then docker build -t node-cmd . docker rm -f node-cmd |: docker run -d --name node-cmd -p 4200:4200 -p 4201:4201 -p 3002:3002 -p 3003:3003 -p 3004:3004 -v $toolsdir/node-cmd/logs:/root/.npm/_logs -v $workdir:/work node-cmd fi
ok now you can add some project e.g.
work/code/myProject
и добавьте в него следующий файл run-cmd (должен быть исполняемым)cd -- "$(dirname "$0")" ../../tools/docker/node-cmd/run-container docker exec -it node-cmd bash -c "cd /work/code/myProject; bash"
затем, если вы запустите указанный выше сценарий (двойным щелчком), вы увидите консоль с доступными командами узла в каталоге проекта, например
npm install
для запуска проекта в фоновом режиме (например, некоторые службы), например, для запуска приложения angular-cli веб-сервера, вы можете использовать следующий сценарий (с именем
run-front
-должен быть исполняемым) - (вы также должны отредактировать/etc/hosts
файл, чтобы добавить правильный домен)cd -- "$(dirname "$0")" open "http://my-angular.local:3002" ../../tools/docker/node-cmd/run-container docker exec -it node-cmd /bin/sh -c "cd /work/code/my-angular-project; npm start" cat # for block script and wait for user ctrl+C
В моем случае ни один из других ответов не сработал, потому что я ранее перешел на node8. Поэтому вместо того, чтобы делать выше, у меня сработало следующее:
which node
который вернулся /usr/local/bin/node@8
вместо того /usr/local/bin/node
поэтому я выполнил эту команду:
brew uninstall node@8
который работал, а затем загрузил последний пакет с официального сайта и установил. После этого мне пришлось закрыть свой терминал и начать заново, чтобы получить доступ к новой версии.
Если вы не можете найти узел, просто запустите whereis node
а также whereis npm
а также whereis nvm
и вы можете удалить перечисленные каталоги по мере необходимости.
Вам также нужно будет полностью закрыть свой терминал и снова открыть его, чтобы изменения вступили в силу.
У меня была такая же проблема (запуск Fedora 34).
Это было вызвано использованием n: https://www.npmjs.com/package/n
n помогает управлять разными версиями узла , но у него есть собственный способ сделать это, а не через диспетчер пакетов ОС!
Вот почему были эти неожиданные папки с узлом внутри.
Это сработало для меня:
- переустановите узел и npm.
- переустановите n (sudo npm i -gn)
- sudo n prune (удаляет все кешированные версии)
- sudo n uninstall (удаляет активную версию)
- теперь у вас установлена только ожидаемая версия узла (установленная на шаге 1)