Як встановити попередню точну версію пакету NPM?


914

Я використовував nvm для завантаження вузла v0.4.10 і встановив npm для роботи з цією версією вузла.

Я намагаюся встановити експрес за допомогою

npm install express -g

і я отримую помилку, що для вираження потрібна версія вузла> = 0.5.0.

Ну, це дивно, оскільки я дотримуюся вказівок для вузла + express + mongodb підручник тут, який використовував вузол v0.4.10, тож я припускаю, що Express був / був доступний для вузла v0.4.10. Якщо моє припущення правильне, як я можу сказати npm отримати версію, яка б працювала з моїм налаштуванням?


7
Чому ви просто не оновите версію Node? Досить впевнений, що ви знайдете більше хороших доповнень, ніж порушена поведінка.
Fabrício Matté

1
Іноді це не варіант. Якщо він використовував nvm для пониження рівня, може бути причина, наприклад, якась інша група контролює версію виконуваного вузла, яку він повинен використовувати.
crazy4jesus

Відповіді:


1581

Якщо вам доведеться встановити старішу версію пакету, просто вкажіть його

npm install <package>@<version>

Наприклад: npm install express@3.0.0

Ви також можете додати --saveпрапор до цієї команди, щоб додати його до залежностей від пакета.json або --save --save-exactпрапорів, якщо ви хочете, щоб саме ця версія була вказана у ваших залежностях package.json.

installКоманда описана тут: https://docs.npmjs.com/cli/install

Якщо ви не впевнені, які версії пакету доступні, ви можете використовувати:

npm view <package> versions

І також npm viewможна використовувати для перегляду інших речей про пакет. https://docs.npmjs.com/cli/view


4
Я вважаю , що це буде встановити найближче основне версію , що матчі, так що це може бути не те , що ви очікуєте stackoverflow.com/a/22345808/1074400
Aakil Fernandes

2
@AakilFernandes, якщо вказати точну версію, буде встановлена ​​точна версія. Якщо ви вкажете семантичний діапазон версій, ви можете отримати неточну відповідність. У цьому відношенні немає нічого унікального щодо команди install.
Брет Коупленд

6
npm view <package> versions -jsonщоб побачити кожну версію, уникаючи еліпсису в кінці списку з багатьма версіями.
TheDarkIn1978

5
Якщо ви користуєтеся npm install express@3.0.0, ви не отримаєте точну версію 3.0.0, ви отримаєте останню версію 3.xx. Щоб отримати конкретну версію, вам потрібно скористатися npm install express@3.0.0 --save-exact. Дивіться це повідомлення в блозі: 60devs.com/npm-install-specific-version.html
Патрік Хунд

5
@PatrickHund ні, npm install express@3.0.0ви отримаєте саме версію 3.0.0. npm install express@^3.0.0я отримав би те, що останній 3.xx --save-exactвпливає на те, як це написано на Packages.json, про що я вже розповідав у своїй відповіді. Також зауважте, --save-exactйого потрібно використовувати в поєднанні з будь-яким --saveабо --save-dev- недостатньо використовувати його самостійно.
Брет Коупленд

93

Це досить просто. Просто напишіть це, наприклад:

npm install -g npm@4.6.1

Або:

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

1
Дякуємо за теги latestта nextверсії!
Джиммі Адаро

@inaps ви могли б додати до відома , що -gпрапор спеціально для пакетів , які ви хочете встановити глобально , як багато користувачів потрапляють на цю сторінку і просто копіювати / вставити , не розуміючи , як вони збираються , щоб вплинути на їх пакет екосистему. Всі ми були "тим хлопцем"
Джексонкр,

73

Спочатку видаліть стару версію, а потім запустіть буквально наступну:

npm install express@3.X

і для стабільних, або останніх

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

12
Це буквальне Xчи резервне значення для якогось числового номера версії?
Кіт Томпсон

7
Це було або / або питання, не питання так / ні. Я спробував npm install express@3.X, і, здавалося, вийшло. Це ознака чи випадковість способу npmаналізує номер версії?
Кіт Томпсон

3
@KeithThompson Так, так! Хе-х, просто жартую ... Це так, як npmце аналізує, дивіться: docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
gonz

3
@gonz: Отже, це буквально X.
Кіт Томпсон

1
Я просто хотів розглянути питання, чому це працювало для вас. Я не знаю оригінального наміру Саурах чи того, що ви намагаєтесь зробити. 3.X означатиме> = 3,0 і <4,0.
gonz


2

ви можете оновити пакет npm за допомогою цієї команди:

npm install <package_name>@<version_number>

приклад: npm install yargs@12.02


1

У мене є загальний спосіб вирішити подібний тип проблем, який також може бути корисним, особливо при клонуванні сховищ для їх локального запуску, але потрібно трохи більше аналізу версій.

За допомогою пакета npm-check-updatesя перевіряю версії пакетів (відповідно до файлу package.json), які не оголошені в останніх доступних версіях, як показано на малюнку ( https://www.npmjs.com/package/npm-check -оновлення ):

введіть тут опис зображення

За допомогою цієї інформації ми можемо перевірити стан оновлення для різних пакетів та прийняти рішення щодо того, які пакети оновити / деградувати, а які - не.

Припускаючи, що ми вирішили оновити всі пакунки, як вони перераховані, ми можемо використовувати ncu -u команду, яка лише змінює ваш файл package.json. Запустіть, npm installщоб оновити встановлені пакети та package-lock.json.

Тоді, залежно від вимог сховища, ми можемо уточнити, що потрібно, встановивши конкретні версії з npm view <package> versionsі npm install <package>@<version>


1

npm install -g npm@version

в якому ви хочете знизити версію

npm install -g npm@3.10.10


але якщо мені це потрібно локально? мені потрібно покласти - зберегти?
AlexNikonov

Так, у вас теж є. Він завантажить пакет локально.
Лакшай Шарма

@AlexNikonov опустіть -g(для глобальної установки, тоді він приземлиться у вашому поточному реєстрі проекту /node_modules) і так, --saveабо --save-devщоб отримати записpackage.json
Френк

0

Ви можете використовувати таку команду, щоб встановити попередню версію пакету npm:

npm install packagename@version


-3

На Ubuntu ви можете спробувати цю команду.

sudo npm cache clean -f
sudo npm install -g n
sudo n stable 

Конкретна версія: sudo n 8.11.3 замість sudo n стабільний

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.