मैं node.js सीखने की कोशिश कर रहा हूं और थोड़ा सा रोडब्लॉक मारा है।Node.js - बाहरी जेएस और सीएसएस फ़ाइलें (केवल node.js का उपयोग नहीं करते हैं)
मेरी समस्या यह है कि मैं बाहरी सीएसएस और जेएस फ़ाइल को एक HTML फ़ाइल में लोड नहीं कर सका।
GET http://localhost:8080/css/style.css 404 (Not Found)
GET http://localhost:8080/js/script.css 404 (Not Found)
मैं कुछ हद तक है, तो निम्न एप्लिकेशन संरचना की नकल सार्वजनिक निर्देशिका के लिए एक मार्ग को जोड़ने के लिए वेब सर्वर सेवा करने के लिए अनुमति देने के लिए कहा गया था (यह जब सभी फाइलों को एप्लिकेशन की जड़ में थे) बाहरी फाइलें
मेरे ऐप संरचना की तरह तो
domain.com
app/
webserver.js
public/
chatclient.html
js/
script.js
css/
style.css
तो मेरी webserver.js स्क्रिप्ट एप्लिकेशन की जड़ में है, और सब कुछ मैं उपयोग करना चाहते 'सार्वजनिक' में है।
मैंने this example भी देखा जो पथ में स्थित किसी भी फाइल सीमाओं को प्राप्त करने के लिए path.extname() का उपयोग करता है। (अंतिम कोड ब्लॉक देखें)।
इसलिए मैंने नई साइट संरचना और इस पथ .extname() उदाहरण को गठबंधन करने का प्रयास किया है, ताकि वेबसर्वर मेरे सार्वजनिक डीआईआर में किसी भी फ़ाइल तक पहुंच की अनुमति दे सके, इसलिए मैं HTML फ़ाइल प्रस्तुत कर सकता हूं, जो बाहरी संदर्भ देता है जेएस और सीएसएस फाइलें।
मेरा webserver.js इस तरह दिखता है।
var http = require('http')
, url = require('url')
, fs = require('fs')
, path = require('path')
, server;
server = http.createServer(function(req,res){
var myPath = url.parse(req.url).pathname;
switch(myPath){
case '/public':
// get the extensions of the files inside this dir (.html, .js, .css)
var extname = mypath.extname(path);
switch (extname) {
// get the html
case '.html':
fs.readFile(__dirname + '/public/chatclient.html', function (err, data) {
if (err) return send404(res);
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data, 'utf8');
res.end();
});
break;
// get the script that /public/chatclient.html references
case '.js':
fs.readFile(__dirname + '/public/js/script.js', function (err, data) {
if (err) return send404(res);
res.writeHead(200, { 'Content-Type': 'text/javascript' });
res.end(content, 'utf-8');
res.end();
});
break;
// get the styles that /public/chatclient.html references
case '.css':
fs.readFile(__dirname + '/public/css/style.css', function (err, data) {
if (err) return send404(res);
res.writeHead(200, { 'Content-Type': 'text/javascript' });
res.end(content, 'utf-8');
res.end();
});
}
break;
default: send404(res);
}
});
सार्वजनिक करने के मामले के अंदर, मैं के माध्यम से वर extname = mypath.extname (पथ) इस निर्देशिका के अंदर फ़ोल्डरों/फ़ाइलें के किसी भी प्राप्त करने के लिए कोशिश कर रहा हूँ; प्रदान किए गए लिंक के समान।
लेकिन जब मैं इसे लॉग इन करता हूं तो 'extname' खाली होता है।
क्या कोई सलाह दे सकता है कि मुझे यहां जोड़ने या जोड़ने की आवश्यकता हो सकती है? मुझे पता है कि यह एक्सप्रेस में आसानी से किया जा सकता है, लेकिन मैं जानना चाहता हूं कि नोड पर भरोसा करने वाली चीज़ को कैसे प्राप्त किया जाए।
मैं इस पर किसी भी मदद की सराहना करता हूं।
अग्रिम धन्यवाद।
वास्तविक त्रुटि क्या है यह देखने के लिए 'send404() 'फ़ंक्शन को कॉल करने से पहले' err' के मान को प्रिंट करने का प्रयास करें। – monsur