Как полностью удалить 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, нужно сделать следующее:

  1. перейдите в / usr / local / lib и удалите любой узел и node_modules
  2. перейдите в / usr / local / include и удалите любой каталог node и node_modules
  3. если вы установили с узлом установки brew, запустите узел удаления brew в своем терминале
  4. проверьте домашний каталог на наличие локальных папок, папок lib или include и удалите оттуда любые узлы или модули_узлов
  5. перейдите в / 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

Я знаю, что этот пост немного устарел, но просто хотел поделиться командами, которые работали для меня в Терминале при удалении 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



После этого я предлагаю использовать следующую команду для установки узла с помощью nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

с https://github.com/nvm-sh/nvm

На Mavericks я устанавливаю его с узла pkg (с сайта nodejs) и удаляю его, чтобы переустановить с помощью brew. Я запускаю только 4 команды в терминале:

  1. sudo rm -rf /usr/local/lib/node_modules/npm/
  2. brew uninstall node
  3. brew doctor
  4. brew prune

Если все еще существует установка узла, повторите шаг 2. После того, как все в порядке, я устанавливаю, используя brew install node

Я обобщил существующие ответы и убедился, что Node js ПОЛНОСТЬЮ УДАЛЕН вместе с NPM.

  1. brew uninstall node
  2. which node
  3. sudo rm -rf /usr/local/bin/node
  4. sudo rm -rf /usr/local/lib/node_modules/npm/
  5. brew doctor
  6. 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;
  1. Первый:

    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.*
    
  2. Напомним, что лучший способ (я обнаружил) полностью удалить узел + npm - это сделать следующее:

    идти к /usr/local/lib и удалите любой узел и node_modules

    cd /usr/local/lib
    
    sudo rm -rf node*
    
  3. идти к /usr/local/include и удалите любой каталог node и node_modules

    cd /usr/local/include
    
    sudo rm -rf node*
    
  4. если вы установили с brew install nodeзатем беги brew uninstall node в вашем терминале

    brew uninstall node
    
  5. проверьте домашний каталог на наличие папок "local", "lib" или "include" и удалите оттуда любые "node" или "node_modules".

    перейдите в /usr/local/bin и удалите любой исполняемый файл узла

    cd /usr/local/bin
    
    sudo rm -rf /usr/local/bin/npm
    
    ls -las
    
  6. Возможно, вам также потребуется выполнить дополнительные инструкции:

    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.

  1. Загрузите LTS-версию узла с официального сайта.
  1. Дважды щелкните установочный пакет node-v16.13.1.pkg и продолжите с настройками по умолчанию.

  2. Тип 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
  1. lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom | while read f; do sudo rm /usr/local/${f}; done
  2. sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
Вариант 2

Перейти к /var/db/receipts/ и удалите все org.nodejs.*

  1. cd /var/db/receipts/ && ls -la
  2. sudo rm -rf org.nodejs.*

Перейти к /usr/local/lib и удалите любые и

  1. cd /usr/local/lib && ls -la

Перейти к /usr/local/include и удалите любые и node_modules каталог

  1. cd /usr/local/include && ls -la
  2. sudo rm -rf node*

Проверьте свои $HOME каталог для любых папок "local", "lib" или "include" и удалите оттуда все "node" или "node_modules".

Перейти к /usr/local/bin и удалите любой исполняемый файл узла

  1. cd /usr/local/bin && ls -la
  2. sudo rm -rf /usr/local/bin/npm
  3. sudo rm -rf /usr/local/bin/node

Возможно, вам также понадобится сделать это:

  1. sudo rm -rf /usr/local/share/man/man1/node.1
  2. sudo rm -rf /usr/local/lib/dtrace/node.d
  3. sudo rm -rf ~/.npm

После этого вы можете проверить, есть ли еще node в вашей системе с which node или найдите все вхождения узла в вашей системе.


Советы

  1. Найдите файлы узлов с помощью find / -name 'node' | sed -E 's|/[^/]+$||' |sort -u
  2. Прежде чем запускать общий код другими, проверьте свои каталоги, чтобы убедиться, что вы написали правильное имя файла.

🖖

Шаги по удалению 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 из $ PATH
  • nvm 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.

По сути, это процесс:

  1. используйте homebrew для удаления узла
  2. чистый домашний пивовар
  3. используйте homebrew для установки узла и отметьте все помеченные конфликтующие файлы
  4. удалить файл с конфликтом флагов (или весь каталог, если это каталог 'node')
  5. переходите к шагу 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 scripts

  • inside tools create file .env which will contain in one place global-paths used in other scripts

    toolspath="/Users/kamil/work/tools"
    codepath="/Users/kamil/work/code"
    workpath=/Users/kamil/work

  • innside dir ../node-cmd create file dockerfile 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 file run-container with following content (this file should be executable e.g. by chmod +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 помогает управлять разными версиями узла , но у него есть собственный способ сделать это, а не через диспетчер пакетов ОС!

Вот почему были эти неожиданные папки с узлом внутри.

Это сработало для меня:

  1. переустановите узел и npm.
  2. переустановите n (sudo npm i -gn)
  3. sudo n prune (удаляет все кешированные версии)
  4. sudo n uninstall (удаляет активную версию)
  5. теперь у вас установлена ​​только ожидаемая версия узла (установленная на шаге 1)
Другие вопросы по тегам