जवाबों:
आप ऐसा पथ भी सेट कर सकते हैं, जिससे वेब पर स्थिर (पहले) पैरामीटर को निर्दिष्ट करने के लिए स्थिर फ़ाइलों को use()पसंद किया जा सके:
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
इस तरह से आपको वेब पर दो अलग-अलग निर्देशिकाएं मिलती हैं जो आपके स्थानीय निर्देशिकाओं को प्रतिबिंबित करती हैं, न कि एक यूआरएल मार्ग जो दो स्थानीय निर्देशिकाओं के बीच विफल हो जाता है।
दूसरे शब्दों में URL पैटर्न:
http://your.server.com/public/*
स्थानीय निर्देशिका से फ़ाइलें सेवित publicकरते समय:
http://your.server.com/public2/*
स्थानीय निर्देशिका से फ़ाइलें सेवित करता है public2।
BTW यह भी उपयोगी है अगर आप अपने सर्वर की जड़ से फ़ाइलों को सेवा करने के लिए स्थिर नहीं करना चाहते हैं, बल्कि एक अधिक योग्य पथ से।
HTH
"homepage": "/public"और "homepage": "/public2"संबंधित प्रतिक्रिया एप्लिकेशन की package.json करने के लिए। दो प्रतिक्रिया ऐप्स का उपयोग करने के बारे में अधिक जानकारी के लिए मेरा उत्तर यहां देखें stackoverflow.com/a/48569896/4746648
sharedफ़ोल्डर ताकि आप उपयोग कर सकते हैं "./"और "./shared"और आप आसानी से कर सकते हैं शेयर js फ़ाइलों बूम: 3 धन्यवाद
आप किसी एकल दृश्य निर्देशिका में "मर्ज" निर्देशिका भी कर सकते हैं
निर्देशिका संरचना
/static/alternate_staticकोड
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
दोनों स्थिर और वैकल्पिक_स्टैटिक की सेवा की जाएगी जैसे कि वे एक ही निर्देशिका में थे। फ़ाइल नाम क्लोबर्स के लिए बाहर देखो, यद्यपि।
main.jsहै तो static/इसमें देखना जारी नहीं रहेगा alternate_static/।
alternate_staticको कभी भी सेवित होने की अपेक्षा कर रहे थे तो यह अभी भी एक क्लोब है ।
यह एक मिडलवेयर इंजेक्शन द्वारा संभव नहीं है, लेकिन आप staticमिडलवेयर को कई बार इंजेक्ट कर सकते हैं :
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
व्याख्या
पर देखो कनेक्ट / lib / मिडलवेयर / static.js # 143 :
path = normalize(join(root, path));
नहीं है options.rootस्थिर जड़ है, जो आप में परिभाषित है express.staticया connect.staticकॉल, और pathअनुरोध मार्ग है।
पर अधिक देखो कनेक्ट / lib / मिडलवेयर / static.js # 154 :
fs.stat(path, function(err, stat){
// ignore ENOENT
if (err) {
if (fn) return fn(err);
return ('ENOENT' == err.code || 'ENAMETOOLONG' == err.code)
? next()
: next(err);
पथ केवल एक बार चेक किया गया था, और यदि फ़ाइल नहीं मिली तो अगले मिडलवेयर को पास किया गया अनुरोध।
कनेक्ट 2.x के लिए अद्यतन
कनेक्ट 2.x के लिए कोड के लिंक निष्क्रिय हैं, लेकिन कई स्थिर मिडलवेयर उपयोग अभी भी पहले की तरह ही सकारात्मक हैं।
const express = require('express');
const path = require('path');
const pagesPath = path.join(__dirname, '/cheatsheet');
const cssPath = path.join(__dirname, '/stylesheet');
const port = process.env.PORT || 3000;
var app = express();
app.use("/cheatsheet" ,express.static(pagesPath));
app.use("/stylesheet",express.static(cssPath));
app.get('/',(request,response)=>{
response.send('Hello CSS!!!');
});
app.get('/bad',(request,response)=>{
response.send({error: 'Bad Request'});
});
app.listen(port, ()=> {
console.log(`Server is running on Port ${port}` );
console.log(__dirname);
});
// folder structure
/cheatsheet/index.html
/stylesheet/style.css