2015-01-29 5 views
2

Я пытаюсь получить набор с НПМ и nodejs на Ubuntu Server, но заметил, что как-то я закончил с двумя версиями после запуска sudo apt-get install nodejs npm Я знаю это, потому что, когда я бегу npm -v, он возвращает 1.3.10, а когда я запустил sudo npm -v, он возвращает 2.3.0. Я бы хотел, чтобы это было настроено правильно, прежде чем я пойду дальше. Кто-нибудь понимает, почему у меня закончились две версии? Я понимаю, что установка nodejs также должна устанавливать npm, но это только позволяет мне запускать npm с повышенными привилегиями, которые, как я знаю, я не должен делать. Может ли кто-нибудь сообщить мне, что я делаю неправильно? Спасибо.Почему у меня есть две версии НПМ

ответ

1

Для некоторых дистрибутивов Linux (Debian/Ubuntu и RedHat/CentOS) последняя версия узла, предоставляемая дистрибутивом, может отставать от стабильной версии. Here are instructions from NodeSource о получении последнего узла.

Затем вы можете установить последние npm, запустив sudo npm i -g [email protected].

1

Попробуйте запустить which npm, а затем sudo which npm, чтобы увидеть, что считается глобальной установкой, и удалите другую. Затем укажите свою среду на существующую npm.

+0

На самом деле я пробовал это уже, но я не знаю, как определить, что является глобальным. Я также не думаю, что 'sudo, какой npm' дает то, что эта команда намеревается. Обе команды, указывающие на ту же версию npm (/ usr/local/bin/npm). Есть ли способ применить 'sudo' к' npm' вместо '' 'и' npm'? – user2027202827

+0

sudo su для root и просто запустите 'which npm', чтобы быть уверенным. – taco

+0

@hobenkr вы это выдумали? – taco

1

Вклад npm содержит nodejs и nodejs Включает npm. По крайней мере, они включают разные версии npm (я не проверял версии узлов), которые затем конфликтуют. Оказывается, что nodejs включает в себя более позднюю версию npm (и я бы предположил более новую версию узла), так что это тот, который я решил продолжить. Вот полное решение, которое сработало для меня.

Удалите все версии узла и npm. Затем запустите sudo apt-get install nodejs. Наконец, перезагрузите систему.

После перезагрузки npm можно запускать без повышенных привилегий, но при этом не удается установить без них. Чтобы исправить это, полезен совет в ответе this. Короче говоря, создайте следующий файл конфигурации для хранения пакетов в другом месте:

#~/.npmrc 
prefix=~/.npm_modules 

Я не совсем уверен, что часть перезагрузки игры, но появляется некоторая память npm пакета сохраняется после его удаления. Перед перезагрузкой ubuntu продолжает искать npm в/usr/bin/даже при том, что он находится в/usr/local/bin /. Я бы предположил, что это имеет отношение к порядку каталогов в переменной окружения PATH, но если кто-то может заполнить то, что мне здесь не хватает, я был бы признателен, даже если бы только в информационных целях.

EDIT

После создания этого поста, мне пришло в голову, что изменение расположения НПМ пакетов может представлять проблему для обновления НПМ npm install -g npm который я думаю, предлагаемый способ сделать обновление. Альтернативное решение, которое я видел, - сделать текущего пользователя владельцем местоположения пакета по умолчанию, но это кажется мне немного глупым и не будет работать для многопользовательских настроек. Кто-нибудь знает о лучшем решении? Вся эта установка npm кажется немного уловкой-22 ...

+0

Перезагрузка помогла исправить мою проблему, спасибо –

1

Это старый вопрос, но у меня недавно была аналогичная проблема с окнами, где я установил узел js и скрипт градиента, контролирующий мою сборку.npm --version в командной строке сообщила правильную версию npm, но задача градации получила другую. Раньше я запускал команду npm -g npm @ latest, и именно так я попал в беду.

Как оказалось, «другая» версия npm была размещена в моей папке пользователя в npm-кеше, и как только я удалил эту папку, моя задача о градиенте обнаружила только мою установленную копию npm.

Смежные вопросы