TLDR: ถอนการติดตั้งแพคเกจทั่วโลกใช้และสร้างใหม่ตอบสนองการใช้แอพพลิเคnpm uninstall -g create-react-app
npx create-react-app app
ปัญหา
คุณกำลังใช้รุ่นเก่ากว่าcreate-react-app
ที่คุณติดตั้งไว้ทั่วโลกโดยใช้ npm create-react-app
คำสั่งเรียกใช้แพคเกจระดับโลกครั้งนี้
คุณจะได้รับการยืนยันว่าคุณกำลังใช้รุ่นเก่าโดยการทำงานnpm outdated -g create-react-app
หรือการเปรียบเทียบกับcreate-react-app --version
npm 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