Danh sách trình duyệt góc: caniuse-lite đã lỗi thời. Vui lòng chạy lệnh tiếp theo `npm update`


11

Gần đây tôi đã bắt đầu gặp lỗi này trong dự án Angular 8 (nút v10.16.0) mà tôi đang làm việc. Chạy npm cập nhật danh sách trình duyệt caniuse-lite không làm gì cả

Vì vậy, tôi đã gỡ bỏ gói-lock.json, loại bỏ node_modules và chạy cài đặt npm, nhưng tệp danh sách trình duyệt đã biến mất. Một lần nữa khi tôi chạy ng build, tôi nhận được thông báo tương tự: Danh sách trình duyệt: caniuse-lite đã lỗi thời. Vui lòng chạy lệnh tiếp theonpm update

Tôi thấy bài đăng này về cùng một chủ đề: Danh sách trình duyệt: caniuse-lite đã lỗi thời. Vui lòng chạy lệnh tiếp theo `npm update caniuse-lite browserlist` Tuy nhiên, nó nói về WebCompiler và autoprefixer và tôi không biết gì về chúng. Xin hướng dẫn


Q: Bạn đã tạo dự án Angular này với Visual Studio chưa? Q: Điều gì đã xảy ra khi bạn chỉ cần làm theo hướng dẫn và chạy npm update caniuse-lite browserslist?
FoggyDay

1
Có, dự án góc cạnh đang sử dụng Visual Studio 2017. Không có gì xảy ra khi tôi sử dụng danh sách trình duyệt npm update caniuse-lite. Không có gì cài đặt ...
SilverFish 16/12/19

Vì tệp danh sách trình duyệt đã biến mất sau khi tôi cài đặt npm mới (caniuse-lite là có), bạn có khuyên tôi nên chạy npm trong danh sách trình duyệt không?
SilverFish

Tôi chỉ có cùng một vấn đề. trong phpstrom, nó bảo tôi chạy npm updatenhưng điều này không giải quyết được vấn đề, chỉ làm cho phiên bản bản thảo của tôi lên cao cho góc 8.
BlakkM9

1
Tôi cũng gặp vấn đề tương tự, Angular 8 sử dụng mã Visual Studio mặc dù tôi không chắc tại sao trình soạn thảo lại gây ra xung đột này. Có câu trả lời nào về điều này chưa? Chúng tôi dự kiến ​​sẽ phát hành một tính năng mới rất lớn trong tuần này và tất nhiên bây giờ ứng dụng của chúng tôi sẽ không được xây dựng. Tôi thấy một số node_modules của chúng tôi sử dụng browserlist
homebrew

Câu trả lời:


8

Giải quyết vấn đề lỗi thời caniuse-lite bằng cách chạy bên dưới các lệnh.

npm cache clean  # optional
npm install caniuse-lite@latest --save

npm cache cleankhông hoạt động trực tiếp vì nó được xử lý bởi npm tự động trong các phiên bản mới nhất. Bạn có muốn chúng tôi sử dụng --force? Nếu có, vui lòng giải thích lý do tại sao chúng ta nên gỡ bỏ bộ đệm.
Vishnudev

1
npm cache sạch không cần thiết một. bạn có thể trực tiếp chạynpm install caniuse-lite@latest --save
Dipten

1
Thêm caniuse-lite vào ứng dụng của bạn (thông qua pack.json bloat) không phải là một ý tưởng hay, vì đó không phải là một phụ thuộc của ứng dụng của bạn - chỉ bộ công cụ npm của bạn. Xem giải thích dài hơn dưới đây. Ngoài ra '--save' là dư thừa vì giờ đây là hành động mặc định với cài đặt.
15:51

Điều này cài đặt caniuse-lite thành công cho tôi, nhưng tôi vẫn gặp lỗi tương tự.
nullmn

Tôi đã thử với nút 10.x và nó đã được sửa. Vui lòng kiểm tra phiên bản nút của bạn.
Dipten

2

TLDR: (có vẻ phản trực giác mà không cần giải thích)

  npm install caniuse-lite browserslist
  npm uninstall caniuse-lite browserslist

Giải trình:

Thông báo cảnh báo này ("canisuse-lite đã lỗi thời, vui lòng ....") được xuất ra bởi các tập lệnh trong danh sách trình duyệt trong quá trình xây dựng / khởi động nếu nó tìm thấy phiên bản cài đặt của caniuse-lite cũ hơn 2 phiên bản từ phiên bản hiện tại. Nếu không có gì trong dự án của bạn thay đổi và bạn đột nhiên thấy thông báo này khi bắt đầu hoặc xây dựng dự án của mình, điều đó có thể có nghĩa là đã có bản cập nhật phiên bản gần đây cho caniuse-lite.

Thật không may, thông điệp văn bản mà trình duyệt danh sách hiển thị chỉ hữu ích nếu bạn cài đặt caniuse-lite như một phần phụ thuộc của dự án của bạn. Rất có thể, bạn đã không làm thế. Vì vậy, khi bạn chạy bản cập nhật 'npm cập nhật caniuse-lite' hoặc 'npm update' caniuse-lite @ mới nhất '(hoặc' npm install '), npm không thấy gói đó được liệt kê trong các phụ thuộc của gói.json, vì vậy nó bỏ qua yêu cầu.

Làm thế nào mà các gói đó trở thành phụ thuộc sau đó? Khi dự án của bạn được tạo (có thể với ứng dụng angularapp hoặc ứng dụng tạo phản ứng hoặc tương tự cho khung của bạn), npm đã cài đặt danh sách trình duyệt như một sự phụ thuộc của các công cụ cần thiết, không phải là một trong những phụ thuộc của dự án. Đồng thời, caniuse-lite đã được cài đặt như một phần phụ thuộc của danh sách trình duyệt. Sau này khi dự án được cập nhật, một tệp pack-lock.json đã được tạo để khóa tất cả các phụ thuộc vào một phiên bản cụ thể.

Nếu bạn có thể cập nhật thông tin phiên bản trong danh sách các phụ thuộc trong gói-lock.json, thì việc chạy 'npm install' sẽ cập nhật các gói này trong node_modules. Bạn không nên chỉnh sửa gói-lock.json theo cách thủ công. Thay vào đó, cách tốt nhất để làm điều đó là:

  1. Tạm thời biến các gói này thành một phụ thuộc của dự án của bạn:

    npm cài đặt danh sách trình duyệt caniuse-lite

    Ngoài việc cập nhật gói lên phiên bản mới nhất, bản cập nhật này còn cập nhật danh sách phụ thuộc trong cả gói.json và (quan trọng nhất) là gói-lock.json.

  2. Xóa các gói này dưới dạng phụ thuộc trực tiếp của dự án của bạn:

    npm gỡ cài đặt danh sách trình duyệt caniuse-lite

    Vì các gói này được sử dụng bởi các phụ thuộc khác, chúng không bị xóa khỏi node_modules. Chỉ gói.json được cập nhật để loại bỏ chúng như một phụ thuộc dự án.

  3. Cam kết gói-lock.json. Bây giờ, bất kỳ ai khác cũng có thể chạy 'npm install' để nhận hai gói được cập nhật từ danh sách các phụ thuộc phụ trong gói-lock.json và dừng thông báo cảnh báo.


Tôi đã thử giải pháp của bạn nhưng tôi vẫn có một cảnh báo với thông báo này (Danh sách trình duyệt: caniuse-lite đã lỗi thời. Vui lòng chạy lệnh tiếp theo npm update) và với thiết lập góc cạnh rõ ràng.
Alexander Kushnir

@AlexanderKushir - sau khi thực hiện cài đặt ở bước 1, hãy tìm trong node_modules cho trình duyệt danh sách và caniuse-lite để kiểm tra xem phiên bản trong gói.json riêng lẻ của họ đã được cập nhật chưa (nên là 1.0.30001019 cho caniuselite và 4.8.3 cho danh sách trình duyệt, như của ngày hôm nay). Phiên bản mới của danh sách trình duyệt (4.8.3) chỉ nên khiếu nại nếu canisuelite không được cập nhật. Có thể bạn có một máy chủ lưu trữ được đặt trong .npmrc không cập nhật hai gói này không? (Nếu là bạn, hãy thử tạm thời đổi tên .npmrc trước khi thực hiện cài đặt?)
jdh

Tôi chỉ phải làm tất cả những điều đó caniuse-litevà tin nhắn đã biến mất
MoonStom

@MoonStom - nếu bạn chỉ cài đặt caniuse-lite, bạn đang thêm đó là phần phụ thuộc của ứng dụng, điều này không chính xác. Vấn đề là trong npm và browserlist. Khi chúng đã được sửa, ứng dụng của bạn không nên phụ thuộc vào caniuse-lite.
JDH
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.