Как я могу изменить версию npm с помощью nvm?

Я использую NVM для установки последних версий nodeJS для работы моего узла. Он прекрасно работает для установки отдельных версий и переключения между ними. Он также устанавливает последнюю версию NPM в каждой локальной папке.../bin вместе с двоичным файлом узла. Однако, похоже, нет никакого способа переключить версию NPM, которую я использую (или, по крайней мере, я не могу понять это).

Единственное решение, которое я могу придумать для себя, - это удалить двоичный файл, в котором он установлен по умолчанию (то есть NPM, который был установлен, когда я впервые установил узел с NVM), и вместо него установить последний двоичный файл NPM. Однако мне интересно, есть ли лучшие способы сделать это.

22 ответа

Решение

Спустя три года после того, как этот вопрос был впервые задан, кажется, что ответ теперь намного проще. Просто обновите версию, установленную nvm, которая находится в ~/.nvm/versions/node/[your-version]/lib/node_modules/npm,

Я только что установил узел 4.2.2, который поставляется с npm 2.14.7, но я хочу использовать npm 3. Итак, я сделал:

cd ~/.nvm/versions/node/v4.2.2/lib
npm install npm

Легко!

И да, это должно работать для любого модуля, а не только для npm, который вы хотите быть "глобальным" для конкретной версии узла.


РЕДАКТИРОВАТЬ 1: в новейшей версии, npm -g является умным и устанавливает модули по указанному выше пути вместо глобального пути системы.


РЕДАКТИРОВАТЬ 2, еще два года и шесть версий Node спустя: как отмечено в более новом ответе, теперь есть команда для этого:

Теперь у nvm есть команда для обновления npm. Это nvm install-latest-npm или же npm install --latest-npm,

Спасибо philraj для указания на это в комментарии.

npm install npm@x.x.x -g
npm install npm@5.4.0 -g

nvm не обрабатывает npm.

Поэтому, если вы хотите установить узел 0.4.x (от которого все еще зависят многие пакеты) и использовать NPM, вы все равно можете использовать npm 1.0.x.

Установите узел 0.6.x (который поставляется с npm 1.1.x) и установите nvm с npm:

npm install nvm
. ~/nvm/nvm.sh

Установите узел 0.4.x с помощью nvm:

nvm install v0.4.12
nvm use v0.4.12

Установите npm, используя install.sh (обратите внимание на -L param, чтобы следовать любым перенаправлениям):

curl -L https://npmjs.org/install.sh | sh

Это обнаружит узел 0.4.12 и установит npm 1.0.106 в вашу папку ~/nvm/v0.4.12/lib/node_modules и создаст символическую ссылку для nvm

~/nvm/v0.4.12/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js

Если вы попытаетесь запустить npm, он все равно выдаст ошибку, но если вы сделаете nvm use v0.4.12 опять же, теперь это должно работать.

Теперь у nvm есть команда для обновления npm. Это nvm install-latest-npm или же npm install --latest-npm,

Я на Windows, и я не мог заставить все это работать. Я продолжал получать ошибки о файлах в пути. Это сработало, хотя:

cd %APPDATA%\nvm\v8.10.0           # or whatever version you're using
mv npm npm-old
mv npm.cmd npm-old.cmd
cd node_modules\
mv npm npm-old
cd npm-old\bin
node npm-cli.js i -g npm@latest

И бум, я снова в деле.

В windows запустите свой терминал от имени администратора (в случае, если у меня возникли проблемы с правами доступа). Затем используйте конкретную версию узла (скажем, 7.8.0)

nvm use 7.8.0

затем обновите свой npm до нужной конкретной версии с помощью

npm install -g npm@5.0.3

Изменение версий npm в ОС на основе Linux пока не является простым командным процессом. Я сделал следующее, чтобы вернуться к более старой версии npm. Это должно работать, чтобы заставить работать любую версию npm. Сначала установите версию npm, которую вы хотите использовать:

sudo npm install -g npm@X.X.X

Удалите ссылку sym в /usr/local/bin/

sudo rm /usr/local/bin/npm

Создайте ссылку sym заново, используя установленную вами версию npm.

sudo ln -s /usr/bin/npm@X.X.X /usr/local/bin/npm

Вы можете установить две версии узла с помощью nvm и установить разные версии npm в каждой среде узла.
Например, nvm install 14.18.0а также nvm install 14.18.1установит две отдельные среды узла.

В 14.18.0 можно использовать v6 (установлена ​​по умолчанию).
В 14.18.1 вы можете использовать npmv7 (установить с помощью npm install -g npm@7).

Таким образом, вы можете безболезненно переключать разные версии npm.

      high@highs-MacBook-Pro / % nvm use 14.18.0
Now using node v14.18.0 (npm v6.14.15)
high@highs-MacBook-Pro / % nvm use 14.18.1
Now using node v14.18.1 (npm v7.24.2)
  1. Найдите узел и версию npm, которую вы хотите использовать, здесь https://nodejs.org/en/download/releases/
  2. НВМ использовать 8.11.4
  3. Вы уже получили 5,6(хороший и хороший).

Мы можем легко решить эту проблему, используя n.

Установить n

      >> npm install -g n

Чтобы переключить версии

      >> n latest

Чтобы перейти на конкретную версию

      >> n 10.16.0

Посмотрев на www.npmjs.com/install.sh, я обнаружил, что есть способ установить конкретную версию, установив переменную среды

export npm_install="2.14.14"

Затем запустите скрипт загрузки, как описано на npmjs.com:

curl -L https://www.npmjs.com/install.sh | sh

Если вы пропустите настройку переменной npm_install, она установит версию, помеченную как последняя

У меня была такая же проблема после установки nvm-windows поверх существующей установки Node. Решение было просто следовать инструкциям:

Вам также следует удалить существующее место установки npm (например, "C:\Users\AppData\Roaming\npm"), чтобы вместо него правильно использовалось место установки nvm.

Установка и обновление

Как насчет npm i -g npm? Вы пытались запустить это также?

Самый простой способ изменить версию - сначала проверить доступную версию с помощьюnvm ls, затем выбрать версию из спискаnvm use version

Небольшой разброс по вышеприведенным инструкциям, сработал для меня. (MacOS Sierra 10.12.6)

npm install -g npm@3.10.10
rm /usr/local/bin/npm
ln -s ~/.npm-packages/bin/npm /usr/local/bin/npm
npm --version

В моем случае я обновил npm с версии 6 до 8 в среде узла, установленной nvm на версию 10. Это привело к тому, что npm больше не работал, что сделало ответы, которые я нашел здесь, бесполезными.

Наконец я прибегнул к очистке папки nvm:

      rm -rf ~/.nvm/versions/node/*

После этого я снова мог работать с nvm и npm. Мой урок: никогда не устанавливайте свежую версию npm с помощью npm. nvm install-latest-npmкажется, позволяет вам безопасно обновляться в устаревших средах.

Разрешить:

  • Я установил последнюю версию узла с помощью nvm для Windows, которая также установила последнюю версию npm.
  • Я удалил каталог npm из папки node_modules и заменил его новой версией из последней установки узла.

Это позволило мне использовать последнюю версию npm с предыдущей версией узла и решило проблему, с которой я столкнулся.

Итак, я только что прошел через это, поскольку npm выдавал ошибку «небезопасного пересмотра устаревших версий» с использованием v18. Node v17 и выше, OpenSSL обновлен до версии 3.0.7. SSL_OP_LEGACY_SERVER_CONNECT — это опция, которая была отключена по умолчанию в OpenSSL 1.1.1 и отключена по умолчанию в OpenSSL 3.0.

Чтобы понизить версию NPM через NPM:

установка nvm v16.20.0 использование nvm v16.20.0

Чтобы изменить свою версию npm при использовании nvm, вы должны установить свою версию npm только внутри папки нужной версии Node.js. Например, если вы хотите установить npm версии 8.12.1, вы должны сделать это в папке версии узла.

Если сделать глобально, то не получится.

По какой-то причине npm install -g npm@X.X.X не сработало, поэтому я изменил версию npm в package.json в npm папка

      ➜  ~ which npm
/opt/homebrew/bin/npm

а затем запустить

      npm install npm

macOS 11.2.2, M1 (arm64)

Если вам это нужно временно, вы можете использоватьnpmв комплекте сnvm-загруженная версия узла напрямую.

Например, это показывает, где находится исполняемый файл текущего узла, а затем запускаетсяnpm install:

      $ whereis node
node: ~/.nvm/versions/node/v18.12.1/bin/node
$ ~/.nvm/versions/node/v18.12.1/bin/npm -v
8.19.2
$ ~/.nvm/versions/node/v18.12.1/bin/npm install
...

Установка и использование NVM в Windows

Ниже приведены шаги для установки NVM в Windows:

NVM означает менеджер версий узлов, который поможет переключать версии вашего узла для конкретного использования. Это также позволяет пользователю работать с несколькими версиями npm и узлов.

Установите установку NVM. Используйте команду "nvm list", чтобы проверить список версий установленного узла. Введите "nvm use number version [6.9.3]" для переключения версий. Для получения дополнительной информации

Другие вопросы по тегам