รายการเบราว์เซอร์เชิงมุม: caniuse-lite ล้าสมัยแล้ว กรุณาเรียกใช้คำสั่งต่อไป `ปรับปรุง npm '


11

ฉันเพิ่งเริ่มรับข้อผิดพลาดนี้ในโครงการ Angular 8 (โหนด v10.16.0) ฉันกำลังทำงานอยู่ การเรียกใช้การอัปเดต npm รายการเบราว์เซอร์ caniuse-lite ไม่ได้ทำอะไรเลย

ดังนั้นฉันจึงลบ package-lock.json ลบ node_modules และรันการติดตั้ง npm แต่ไฟล์เบราว์เซอร์หายไป อีกครั้งเมื่อฉันรัน ng build ฉันได้รับข้อความเดียวกัน: Browserslist: caniuse-lite ล้าสมัยแล้ว กรุณาเรียกใช้คำสั่งต่อไปnpm update

ฉันเห็นโพสต์นี้ในหัวข้อเดียวกัน: Browserslist: caniuse-lite ล้าสมัยแล้ว กรุณาเรียกใช้คำสั่งถัดไป `ปรับปรุง npm รายการ caniuse-lite browserlist ' แต่มันพูดถึง WebCompiler และ autoprefixer และฉันก็ไม่รู้ว่า กรุณาแนะนำ


ถาม: คุณสร้างโครงการเชิงมุมด้วย Visual Studio หรือไม่ Q: สิ่งที่เกิดขึ้นเมื่อคุณก็ปฏิบัติตามคำแนะนำและวิ่งnpm update caniuse-lite browserslist?
FoggyDay

1
ใช่โครงการเชิงมุมใช้ Visual Studio 2017 ไม่มีอะไรเกิดขึ้นเมื่อฉันใช้รายการปรับปรุงเบราว์เซอร์ caniuse-lite npm ไม่มีการติดตั้ง ...
SilverFish

เนื่องจากไฟล์เบราว์เซอร์หายไปหลังจากที่ฉันติดตั้ง npm ใหม่ (caniuse-lite มี) คุณแนะนำให้ฉันรัน npm ในเบราว์เซอร์ลิสต์หรือไม่?
SilverFish

ฉันเพิ่งได้รับปัญหาเดียวกัน ใน phpstrom มันบอกให้ฉันทำงานnpm updateแต่สิ่งนี้ไม่ได้แก้ปัญหาเพียงทำให้รุ่น typescript ของฉันสูงสำหรับเชิงมุม 8
BlakkM9

1
ฉันมีปัญหาเดียวกันนี้ด้วยเช่นกัน Angular 8 โดยใช้รหัส Visual Studio ถึงแม้ว่าฉันไม่แน่ใจว่าทำไมตัวแก้ไขจึงทำให้เกิดข้อขัดแย้งนี้ คำตอบใด ๆ เกี่ยวกับเรื่องนี้หรือยัง เราน่าจะเปิดตัวฟีเจอร์ใหม่ขนาดใหญ่ในสัปดาห์นี้และแน่นอนว่าตอนนี้แอปของเราจะไม่สร้าง ผมเห็นหลาย node_modules ของเราโดยใช้ browserlist
Homebrew

คำตอบ:


8

แก้ปัญหา caniuse-lite ที่ล้าสมัยโดยใช้คำสั่งด้านล่าง

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

npm cache cleanไม่ทำงานโดยตรงเนื่องจากจัดการโดย npm โดยอัตโนมัติในเวอร์ชันล่าสุด คุณต้องการให้เราใช้งาน--force? ถ้าใช่โปรดอธิบายว่าทำไมเราควรจะทำการแครี่
Vishnudev

1
ไม่จำเป็นต้องล้างแคช npm คุณสามารถเรียกใช้โดยตรงnpm install caniuse-lite@latest --save
Dipten

1
การเพิ่ม caniuse-lite ลงในแอปของคุณ (ผ่าน package.json bloat) ไม่ใช่ความคิดที่ดีเนื่องจากไม่ใช่แอพของคุณ - เป็นเพียงชุดเครื่องมือ NPM เท่านั้น ดูคำอธิบายเพิ่มเติมด้านล่าง นอกจากนี้ '- บันทึก' ซ้ำซ้อนเนื่องจากตอนนี้เป็นการกระทำเริ่มต้นพร้อมการติดตั้ง
jdh

นี่ติดตั้ง caniuse-lite สำเร็จสำหรับฉัน แต่ฉันยังคงได้รับข้อผิดพลาดเดียวกัน
nullmn

ฉันลองกับโหนด 10.x และแก้ไข โปรดตรวจสอบเวอร์ชั่นโหนดของคุณ
Dipten

2

TLDR: (อาจดูเหมือนเคาน์เตอร์ง่ายโดยไม่มีคำอธิบาย)

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

คำอธิบาย:

ข้อความเตือนนี้ ("canisuse-lite ล้าสมัยโปรด .... ") จะถูกส่งออกโดยสคริปต์ในเบราว์เซอร์รายการระหว่างการสร้าง / เริ่มต้นหากพบว่าเวอร์ชันที่ติดตั้งของ caniuse-lite นั้นเก่ากว่า 2 เวอร์ชั่นจากเวอร์ชั่นปัจจุบัน หากไม่มีสิ่งใดเปลี่ยนแปลงในโครงการของคุณและคุณเห็นข้อความนี้ทันทีเมื่อเริ่มต้นหรือสร้างโครงการของคุณนั่นอาจหมายความว่ามีการอัปเดตเวอร์ชันล่าสุดเป็น caniuse-lite

ขออภัยข้อความข่าวสารที่เบราว์เซอร์ลิสต์แสดงนั้นมีประโยชน์เฉพาะเมื่อคุณติดตั้ง caniuse-lite เพื่ออ้างอิงโครงการของคุณ ส่วนใหญ่แล้วคุณไม่ได้ ดังนั้นเมื่อคุณเรียกใช้ 'npm update caniuse-lite' หรือ 'npm update' caniuse-lite @ ล่าสุด '(หรือ' npm install '), npm จะไม่เห็นแพคเกจนั้นแสดงอยู่ใน package.json ของคุณดังนั้นจึงไม่สนใจ การร้องขอ

แพคเกจเหล่านั้นกลายเป็นอ้างอิงได้อย่างไร? เมื่อโครงการของคุณถูกสร้างขึ้น (อาจมีแอป angularapp หรือ create-react-app หรือคล้ายกันสำหรับกรอบงานของคุณ), ติดตั้งเบราว์เซอร์รายการ NPM เป็นการพึ่งพาเครื่องมือที่จำเป็นไม่ใช่เป็นหนึ่งในการอ้างอิงโครงการของคุณ ในเวลาเดียวกัน, caniuse-lite ถูกติดตั้งเป็นการพึ่งพาของ browserlist ต่อมาเมื่อโครงการได้รับการปรับปรุงไฟล์ package-lock.json ถูกสร้างขึ้นซึ่งล็อคการอ้างอิงทั้งหมดกับรุ่นที่ระบุ

หากคุณสามารถอัพเดตข้อมูลเวอร์ชันในรายการการพึ่งพาใน package-lock.json ดังนั้นการรัน 'npm install' จะอัพเดตแพ็กเกจเหล่านี้ใน node_modules คุณไม่ควรแก้ไข package-lock.json ด้วยตนเอง วิธีที่ดีที่สุดที่จะทำคือ:

  1. จัดทำแพ็กเกจเหล่านี้เป็นการชั่วคราวสำหรับโครงการของคุณ:

    npm ติดตั้งรายการเบราว์เซอร์ caniuse-lite

    นอกเหนือจากการอัพเดตแพ็กเกจเป็นเวอร์ชันล่าสุดสิ่งนี้จะอัพเดตรายการการพึ่งพาในทั้ง package.json และ (ที่สำคัญที่สุด) package-lock.json

  2. ลบแพ็คเกจเหล่านี้เป็นการอ้างอิงโดยตรงของโครงการของคุณ:

    npm ถอนการติดตั้งรายการ browser-lite ของ browser

    เนื่องจากแพ็กเกจเหล่านี้ถูกใช้โดยการขึ้นต่อกันอื่น ๆ จึงไม่ถูกลบออกจาก node_modules package.json เท่านั้นที่มีการปรับปรุงเพื่อลบออกเป็นการอ้างอิงโครงการ

  3. กระทำ package-lock.json ตอนนี้ทุกคนสามารถเรียกใช้ 'การติดตั้ง npm' เพื่อรับแพคเกจที่อัปเดตสองรายการจากรายการการพึ่งพาย่อยใน package-lock.json และหยุดข้อความเตือน


ฉันลองใช้วิธีแก้ปัญหาของคุณแล้ว แต่ยังคงมีคำเตือนด้วยข้อความนี้ (Browserslist: caniuse-lite ล้าสมัยกรุณาเรียกใช้คำสั่งถัดไปnpm update) และตั้งค่ามุมใหม่ทั้งหมด
Alexander Kushnir

@AlexanderKushir - หลังจากทำการติดตั้งในขั้นตอนที่ 1 ให้ดูใน node_modules เพื่อหา browserlist และ caniuse-lite เพื่อตรวจสอบว่าเวอร์ชั่นของพวกเขาใน package.json ได้รับการอัปเดตแล้วหรือไม่ (ควรเป็น 1.0.30001019 สำหรับ caniuselite และ 4.8.3 สำหรับ browserlist ของวันนี้) รายการเบราว์เซอร์เวอร์ชันใหม่ (4.8.3) ควรบ่นเฉพาะเมื่อ canisuelite ไม่ได้รับการอัพเดต เป็นไปได้หรือไม่ที่คุณมีแคชเซิร์ฟเวอร์ตั้งอยู่ใน. npmrc ที่ไม่ได้อัปเดตแพ็คเกจทั้งสองนี้ (หากคุณลองเปลี่ยนชื่อ. npmrc ชั่วคราวก่อนทำการติดตั้ง?)
jdh

ฉันแค่ต้องทำทุกอย่างเพื่อcaniuse-liteและข้อความก็หายไป
MoonStom

@MoonStom - หากคุณติดตั้ง caniuse-lite เท่านั้นคุณกำลังเพิ่มแอพนั้นขึ้นอยู่กับแอพที่คุณพึ่งพาซึ่งไม่ถูกต้อง ปัญหาอยู่ที่ npm และ browserlist เมื่อแก้ไขแล้วแอปของคุณไม่ควรขึ้นอยู่กับ caniuse-lite
jdh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.