TLDR: ถอนการติดตั้งแพคเกจทั่วโลกใช้และสร้างใหม่ตอบสนองการใช้แอพพลิเคnpm uninstall -g create-react-appnpx create-react-app app
ปัญหา
คุณกำลังใช้รุ่นเก่ากว่าcreate-react-appที่คุณติดตั้งไว้ทั่วโลกโดยใช้ npm create-react-appคำสั่งเรียกใช้แพคเกจระดับโลกครั้งนี้
คุณจะได้รับการยืนยันว่าคุณกำลังใช้รุ่นเก่าโดยการทำงานnpm outdated -g create-react-appหรือการเปรียบเทียบกับcreate-react-app --versionnpm view create-react-app
ความจริงที่ว่ารุ่นของreact-scriptsเป็นรุ่นล่าสุดไม่มีอะไรเกี่ยวข้องกับรุ่นของแพ็คเกจที่กำลังเริ่มต้นแอพ ( create-react-app) ซึ่งคว้ารุ่นล่าสุดของแพ็คเกจที่ใช้ (react-scriptsในกรณีนี้)
สารละลาย
หากคุณต้องการที่จะดำเนินการโดยใช้คำสั่งคุณจะต้องอัปเดแพคเกจทั่วโลกใช้create-react-app npm update -g create-react-appโปรดทราบว่าคุณจะต้องดำเนินการนี้เป็นระยะเพื่อให้ทันสมัย คุณจะสังเกตได้ว่าcreate-react-appไม่แนะนำสิ่งนี้ (ระบุไว้ในบันทึกจากการติดตั้งของคุณ)
แนวทางที่ดีกว่าคือการลบการติดตั้งทั่วโลกทั้งหมด ( npm uninstall -g create-react-app) และใช้แทนnpxเพื่อที่จะคว้าแพ็คเกจรุ่นล่าสุดทุกครั้ง (รายละเอียดเพิ่มเติมเกี่ยวกับnpxด้านล่าง)
คุณควรยืนยันว่ามันถูกถอนการติดตั้งทั่วโลกโดยพยายามที่จะใช้create-react-appเพื่อให้แน่ใจว่าคำสั่ง "ไม่พบ"
มีปัญหาเกี่ยวกับการถอนการติดตั้งหรือไม่
which create-react-appคุณสามารถแก้ปัญหาที่ได้รับการติดตั้งโดยใช้ หากคุณมีปัญหาในการถอนการติดตั้งคุณอาจมีหลายโหนด / npm บนเครื่องของคุณ (จากการติดตั้งหลายครั้งหรือเนื่องจากคุณใช้ตัวจัดการเวอร์ชันโหนดเช่นnvm) นี่เป็นปัญหาแยกต่างหากที่ฉันจะไม่พูดถึง แต่จะมีข้อมูลในคำตอบนี้
วิธีการทางนิวเคลียร์อย่างรวดเร็วจะเป็นการลบอย่างแรง ( rm -rf) ที่เส้นทางที่which create-react-appส่งคืน
เสริม
แพ็กเกจโกลบอล npm และnpxคำสั่ง
$ NPM_PACKAGE_NAME จะใช้แพ็คเกจรุ่นที่ติดตั้งไว้ทั่วโลกเสมอไม่ว่าคุณจะอยู่ในไดเรกทอรีใด
$ npx NPM_PACKAGE_NAME จะใช้แพ็คเกจเวอร์ชันแรกที่พบเมื่อค้นหาจากไดเรกทอรีปัจจุบันไปยังรูท:
- หากคุณมีแพ็คเกจในไดเรกทอรีปัจจุบันของคุณมันจะใช้มัน
- ถ้าคุณมีแพ็กเกจในไดเรกทอรีที่เป็นพาเรนต์ของไดเรกทอรีปัจจุบันของคุณก็จะใช้แพ็คเกจแรกที่พบ
- ถ้าคุณมีการติดตั้งแพคเกจทั่วโลกก็จะใช้มัน
- มิฉะนั้นถ้าคุณไม่มีแพ็คเกจเลยมันจะทำการติดตั้งชั่วคราวใช้แล้วทิ้งไป - นี่เป็นวิธีที่ดีที่สุดเพื่อให้แน่ใจว่าแพคเกจจะถึงวันที่
ข้อมูลเพิ่มเติมเกี่ยวกับ npx สามารถพบได้ในคำตอบนี้
ใช้npxกับcreate-react-app
create-react-appมีคำสั่ง / นามแฝงพิเศษบางอย่างเพื่อสร้างแอปตอบโต้ (แทนnpx) ที่เฉพาะเจาะจงกับแพคเกจนั้น ( yarn create react-app, npm init react-app) แต่npx create-react-appจะทำงานเช่นเดียวกับที่ทำกับแพ็คเกจอื่น ๆ
yarnเทียบกับการnpmติดตั้งทั่วโลก
Yarn เก็บการติดตั้งทั่วโลกไว้ในโฟลเดอร์npmอื่นซึ่งเป็นสาเหตุที่yarn create react-appจะทำงานได้ทันทีโดยไม่ต้องถอนการติดตั้งแพ็กเกจ npm ทั่วโลก (เท่าที่เกี่ยวข้องกับเส้นด้ายแพ็คเกจยังไม่ได้ติดตั้ง)
นี่เป็นเพียงวิธีการแก้ปัญหาชั่วคราวเนื่องจากคุณจะต้องจำไว้ว่าให้ใช้ไหมพรมแทนการใช้เวลา 23.00 น. ทุกครั้งเมื่อใช้แอป Create React