โดยปกติแล้วคุณไม่ต้องการเปิดเผยเส้นทางภายในของคุณสำหรับวิธีที่โครงสร้างเซิร์ฟเวอร์ของคุณไปสู่โลกภายนอก สิ่งที่คุณสามารถทำได้คือทำให้/scripts
เส้นทางแบบคงที่ในเซิร์ฟเวอร์ของคุณที่จะดึงไฟล์จากสิ่งที่พวกเขาเกิดขึ้นไดเรกทอรีจะอาศัยอยู่ใน. "./node_modules/bootstrap/dist/"
ดังนั้นถ้าไฟล์ของคุณอยู่ใน จากนั้นแท็กสคริปต์ในหน้าเว็บของคุณจะมีลักษณะดังนี้:
<script src="/scripts/bootstrap.min.js"></script>
หากคุณกำลังใช้ express กับ nodejs เส้นทางแบบสแตติกจะง่ายอย่างนี้:
app.use('/scripts', express.static(__dirname + '/node_modules/bootstrap/dist/'));
จากนั้นการร้องขอใด ๆ จากเบราว์เซอร์/scripts/xxx.js
จะต้องไปดึงมาโดยอัตโนมัติจากคุณไดเรกทอรีที่dist
__dirname + /node_modules/bootstrap/dist/xxx.js
หมายเหตุ: รุ่นที่ใหม่กว่าของ NPM วางสิ่งต่าง ๆ ไว้ที่ระดับบนสุดไม่ซ้อนกันดังนั้นถ้าคุณใช้ NPM รุ่นที่ใหม่กว่าชื่อเส้นทางจะแตกต่างจากที่ระบุไว้ในคำถามของ OP และในคำตอบปัจจุบัน แต่แนวคิดยังคงเหมือนเดิม คุณหาที่ไฟล์จะถูกร่างกายอยู่ในไดรฟ์เซิร์ฟเวอร์ของคุณและให้คุณapp.use()
กับการexpress.static()
ที่จะทำให้การหลอกเส้นทางไปยังไฟล์เหล่านั้นเพื่อให้คุณไม่เปิดเผยไฟล์เซิร์ฟเวอร์องค์กรระบบที่เกิดขึ้นจริงให้กับลูกค้า
หากคุณไม่ต้องการสร้างเส้นทางแบบคงที่เช่นนี้คุณน่าจะดีกว่าเพียงแค่คัดลอกสคริปต์สาธารณะไปยังเส้นทางที่เว็บเซิร์ฟเวอร์ของคุณปฏิบัติต่อ/scripts
หรือกำหนดระดับสูงสุดที่คุณต้องการใช้ โดยปกติคุณสามารถทำให้ส่วนนี้เป็นส่วนหนึ่งของกระบวนการสร้าง / ปรับใช้ของคุณ
หากคุณต้องการให้ไฟล์หนึ่งไฟล์เป็นไฟล์สาธารณะในไดเรกทอรีและไม่ใช่ทุกสิ่งที่พบในไดเรกทอรีนั้นคุณสามารถสร้างเส้นทางแต่ละเส้นทางด้วยตนเองสำหรับแต่ละไฟล์แทนที่จะใช้express.static()
เช่น:
<script src="/bootstrap.min.js"></script>
และรหัสเพื่อสร้างเส้นทางสำหรับสิ่งนั้น
app.get('/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});
หรือถ้าคุณยังต้องการแยกเส้นทางสำหรับสคริปต์ด้วย/scripts
คุณสามารถทำได้:
<script src="/scripts/bootstrap.min.js"></script>
และรหัสเพื่อสร้างเส้นทางสำหรับสิ่งนั้น
app.get('/scripts/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});