Làm cách nào để cài đặt phiên bản chính xác trước đó của gói NPM?


916

Tôi đã sử dụng nvm để tải xuống nút v0.4.10 và cài đặt npm để làm việc với phiên bản nút đó.

Tôi đang cố gắng cài đặt express bằng

npm install express -g

và tôi nhận được một lỗi thể hiện yêu cầu phiên bản nút> = 0.5.0.

Chà, điều này thật kỳ lạ, vì tôi đang làm theo hướng dẫn cho một hướng dẫn về nút + express + mongodb ở đây đã sử dụng nút v0.4.10, vì vậy tôi giả sử express là / có sẵn cho nút v0.4.10. Nếu giả định của tôi là chính xác, làm thế nào để tôi nói với npm để tìm nạp một phiên bản sẽ hoạt động với thiết lập của tôi?


7
Tại sao bạn không cập nhật phiên bản Node của mình? Khá chắc chắn rằng sẽ có nhiều bổ sung tốt hơn so với hành vi bị hỏng mà bạn sẽ tìm thấy.
Fabrício Matté

1
Đôi khi đó không phải là một lựa chọn. Nếu anh ta sử dụng nvm để hạ cấp, có thể có một lý do, chẳng hạn như một số nhóm khác điều khiển phiên bản nút thực thi mà anh ta phải sử dụng.
lừa4jesus

Câu trả lời:


1583

Nếu bạn phải cài đặt phiên bản cũ hơn của gói, chỉ cần chỉ định gói

npm install <package>@<version>

Ví dụ: npm install express@3.0.0

Bạn cũng có thể thêm --savecờ vào lệnh đó để thêm nó vào các phụ thuộc của gói.json hoặc--save --save-exact cờ nếu bạn muốn phiên bản chính xác được chỉ định trong các phụ thuộc của gói.json.

Các installlệnh được ghi lại ở đây: https://docs.npmjs.com/cli/install

Nếu bạn không chắc chắn phiên bản nào của gói có sẵn, bạn có thể sử dụng:

npm view <package> versions

npm viewcó thể được sử dụng để xem những thứ khác về một gói quá. https://docs.npmjs.com/cli/view


4
Tôi tin rằng điều này sẽ cài đặt phiên bản chính gần nhất phù hợp, vì vậy nó có thể không phải là những gì bạn mong đợi stackoverflow.com/a/22345808/1074400
Aakil Fernandes

2
@AakilFernandes nếu bạn chỉ định một phiên bản chính xác, một phiên bản chính xác sẽ được cài đặt. Nếu bạn chỉ định phạm vi phiên bản ngữ nghĩa, thì bạn có thể nhận được kết quả khớp không chính xác. Không có gì độc đáo về lệnh cài đặt trong khía cạnh đó.
Bret Copeland

6
npm view <package> versions -jsonđể xem mọi phiên bản, tránh dấu chấm lửng ở cuối danh sách có nhiều phiên bản.
TheDarkIn1978

5
Nếu bạn sử dụng npm install express@3.0.0, bạn sẽ không nhận được phiên bản 3.0.0 chính xác, bạn sẽ nhận được phiên bản 3.xx mới nhất. Để có được phiên bản cụ thể, bạn phải sử dụng npm install express@3.0.0 --save-exact. Xem bài đăng trên blog này: 60devs.com/npm-install-specific-version.html
Patrick Hund

5
@PatrickHund không, npm install express@3.0.0sẽ giúp bạn có phiên bản chính xác 3.0.0. npm install express@^3.0.0sẽ giúp bạn có được 3.xx mới nhất --save-exactảnh hưởng đến cách nó được ghi vào gói.json, mà tôi đã trình bày trong câu trả lời của mình. Cũng lưu ý, --save-exactphải được sử dụng kết hợp với --savehoặc --save-dev- không đủ để sử dụng riêng.
Bret Copeland

93

Nó khá là dễ. Chỉ cần viết điều này, ví dụ:

npm install -g npm@4.6.1

Hoặc là:

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

1
Cảm ơn các thẻ latestnextphiên bản!
Jimmy Adaro

@inaps bạn có thể thêm một lưu ý rằng -gcờ dành riêng cho các gói bạn muốn cài đặt trên toàn cầu vì nhiều người dùng sẽ truy cập trang này và chỉ sao chép / dán mà không nhận ra cách chúng sắp tác động đến hệ sinh thái gói của họ. Tất cả chúng ta đều là "gã đó"
Jacksonkr

73

Đầu tiên xóa phiên bản cũ, sau đó chạy theo nghĩa đen như sau:

npm install express@3.X

và cho ổn định hoặc gần đây

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

12
Đó có phải là một nghĩa đen Xhoặc một từ thay thế cho một số phiên bản số không?
Keith Thompson

7
Đó là một hoặc / hoặc câu hỏi, không phải là câu hỏi có / không. Tôi đã thử npm install express@3.X, và nó dường như làm việc. Đó có phải là một tính năng hoặc một tai nạn của cách npmphân tích số phiên bản?
Keith Thompson

3
@KeithThndry Vâng, đúng vậy! Hehe, đùa thôi ... Đó là cách npmphân tích cú pháp, xem: docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
gonz

3
@gonz: Vậy đó là một nghĩa đen X.
Keith Thompson

1
Tôi chỉ muốn giải quyết tại sao điều đó làm việc cho bạn. Tôi không biết ý định ban đầu của Saurabh hoặc những gì bạn đang cố gắng thực hiện. 3.X có nghĩa là> = 3.0 và <4.0.
gonz

41

Theo tôi đó là cách dễ nhất và nhanh nhất:

$ npm -v

4.2.0

$ npm install -g npm@latest-3

...

$ npm -v

3.10.10


2

bạn có thể cập nhật gói npm của mình bằng cách sử dụng lệnh này:

npm install <package_name>@<version_number>

thí dụ: npm install yargs@12.02


1

Tôi có một cách chung để giải quyết loại vấn đề này, cũng có thể hữu ích, đặc biệt là khi nhân bản kho lưu trữ để chạy chúng cục bộ, nhưng cần phân tích thêm một chút về các phiên bản.

Với gói npm-check-updatestôi xác minh các phiên bản của gói (theo tệp pack.json) không được khai báo trong các phiên bản có sẵn mới nhất của chúng, như trong hình ( https://www.npmjs.com/package/npm-check -updates ):

nhập mô tả hình ảnh ở đây

Với thông tin này, chúng tôi có thể xác minh trạng thái cập nhật của các gói khác nhau và đưa ra quyết định xem gói nào sẽ nâng cấp / xuống cấp và gói nào không.

Giả sử rằng chúng tôi đã quyết định cập nhật tất cả các gói khi chúng được liệt kê, chúng tôi có thể sử dụng ncu -ulệnh chỉ sửa đổi tệp pack.json của bạn. Chạy npm installđể cập nhật các gói đã cài đặt và gói-lock.json.

Sau đó, tùy thuộc vào yêu cầu của kho lưu trữ, chúng tôi có thể tinh chỉnh những gì cần thiết, cài đặt các phiên bản cụ thể với npm view <package> versionsnpm install <package>@<version>


1

npm install -g npm@version

trong đó bạn muốn hạ cấp

npm install -g npm@3.10.10


Nhưng nếu tôi cần nó địa phương? tôi có cần đặt - lưu không?
AlexNikonov

Có bạn có quá..tôi sẽ tải gói địa phương.
Lakshay Sharma

@AlexNikonov sử dụng -g(để cài đặt toàn cầu, sau đó nó sẽ nằm trong thư mục dự án hiện tại của bạn /node_modules) và có, --savehoặc --save-devđể có một mục trongpackage.json
Frank Nocke

0

Bạn có thể sử dụng lệnh sau để cài đặt phiên bản trước của gói npm:

npm install packagename@version


-3

Trên Ubuntu bạn có thể thử lệnh này.

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

Phiên bản cụ thể: sudo n 8.11.3 thay vì sudo n ổn định

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.