นี่เป็นข้อ จำกัด พิเศษที่เพิ่มโดยผู้พัฒนา create-react-app มันถูกนำมาใช้ในเพื่อให้แน่ใจว่าไฟล์ที่อาศัยอยู่ในModuleScopePlugin src/ปลั๊กอินนั้นรับรองว่าการนำเข้าสัมพัทธ์จากไดเรกทอรีต้นทางของแอพไม่สามารถเข้าถึงจากภายนอกได้
คุณสามารถปิดใช้งานฟีเจอร์นี้ได้ แต่หลังจากejectการทำงานของโครงการ create-react-app
ฟีเจอร์และการอัพเดทส่วนใหญ่นั้นซ่อนอยู่ภายในระบบการสร้างแอปแบบตอบโต้ หากคุณทำให้ejectคุณไม่มีฟีเจอร์และการอัปเดตอีกต่อไป ดังนั้นหากคุณยังไม่พร้อมที่จะจัดการและกำหนดค่าแอพพลิเคชั่นที่รวมไว้เพื่อกำหนดค่า webpack และอื่น ๆ - อย่าejectดำเนินการ
เล่นตามกฎที่มีอยู่ (เลื่อนไปที่ src) แต่ตอนนี้คุณสามารถทราบวิธีการลบข้อ จำกัด : ทำejectและลบModuleScopePluginจากการตั้งค่าไฟล์ webpack
ตั้งแต่สร้างปฏิกิริยาแอป v0.4.0NODE_PATHตัวแปรสภาพแวดล้อมจะช่วยให้การระบุเส้นทางสำหรับการนำเข้าแน่นอน และตั้งแต่v3.0.0 NODE_PATHจะเลิกในความโปรดปรานของการตั้งค่าbaseUrlในหรือjsconfig.jsontsconfig.json
การนำเข้าแบบสัมบูรณ์อนุญาตให้ใช้import App from 'App'แทนimport App from './App'สัมพันธ์กับค่าที่ระบุใน URL พื้นฐาน
คุณสมบัตินี้มีประโยชน์อย่างยิ่งสำหรับการ monorepos หรือคำถามการกำหนดค่าอื่น ๆ แต่ไม่ใช่สำหรับการนำเข้ารูปภาพหรือสิ่งอื่นจากpublicโฟลเดอร์
เนื้อหาของpublicโฟลเดอร์จะถูกวางไว้ในbuildโฟลเดอร์และให้บริการโดย url ที่เกี่ยวข้อง นอกจากนี้ทุกอย่างที่นำเข้าจะถูกประมวลผลโดย webpack และจะถูกวางไว้ในbuildโฟลเดอร์
หากคุณนำเข้าบางสิ่งจากpublicโฟลเดอร์อาจเป็นสิ่งที่ซ้ำกันในbuildโฟลเดอร์และจะมี URL ที่แตกต่างกันสองแบบ (หรือด้วยวิธีการโหลดที่แตกต่างกัน) ซึ่งท้ายที่สุดแล้วขนาดแพคเกจการดาวน์โหลดจะแย่ลง
การนำเข้าจากโฟลเดอร์srcเป็นที่ต้องการและมีข้อดี ทุกอย่างจะได้รับการบรรจุโดย webpack ไปมัดกับชิ้นขนาดที่เหมาะสมและมีประสิทธิภาพในการโหลดที่ดีที่สุด
มีโซลูชั่นระดับกลางคือระบบrewireซึ่งช่วยให้คุณสามารถปรับเปลี่ยนการตั้งค่า webpack โดยทางโปรแกรม แต่เอาModuleScopePluginปลั๊กอินไม่ได้เป็นดีแก้ปัญหา; srcมันจะดีกว่าที่จะเพิ่มการทำงานอย่างเต็มที่ไดเรกทอรีเพิ่มเติมที่คล้ายกับ
ขณะนี้create-react-appไม่รองรับไดเรกทอรีเพิ่มเติมนอกเหนือจากsrcในโฟลเดอร์ราก ซึ่งสามารถทำได้โดยใช้react-app-rewire-alias
../public/images/logo_2016.pngคุณเพิ่มขึ้นสองครั้งก่อนจากโฟลเดอร์คอมโพเนนต์จากนั้นออกจากโฟลเดอร์ src