Estoy tratando de aprender node.js y he golpeado un poco de una barricada.Node.js - archivos JS y CSS externos (simplemente usando node.js no expreso)
Mi problema es que parece que no puedo cargar un archivo css y js externo en un archivo html.
GET http://localhost:8080/css/style.css 404 (Not Found)
GET http://localhost:8080/js/script.css 404 (Not Found)
(esto fue cuando todos los archivos estaban en la raíz de la aplicación)
me dijeron para imitar un poco la siguiente estructura aplicación, añadir una ruta para el directorio público para permitir que el servidor web para servir a la archivos externos.
la estructura de mi aplicación es igual que
domain.com
app/
webserver.js
public/
chatclient.html
js/
script.js
css/
style.css
Así que mi guión webserver.js está en la raíz de la aplicación, y todo lo que quiero de acceso está en 'público'.
También vi this example que usa path.extname() para obtener cualquier extensión de archivos ubicada en una ruta. (ver el último bloque de código).
Así que he intentado combinar la nueva estructura del sitio y este ejemplo path.extname(), para que el servidor web permita el acceso a cualquier archivo en mi directorio público, así puedo renderizar el archivo html, que hace referencia al js y css archivos.
Mi webserver.js tiene este aspecto.
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);
}
});
Dentro de la caja de público, estoy tratando de conseguir alguna de las carpetas/archivos dentro de este directorio a través de var = extname mypath.extname (ruta); Similar al enlace que proporcioné.
Pero por el momento 'extname' está vacío cuando el registro de consola.
¿Alguien puede aconsejarme qué podría necesitar agregar o usar aquí? Soy consciente de que esto se puede hacer fácilmente en Express, pero me gustaría saber cómo lograr lo mismo simplemente confiando en Node.
Agradeceré cualquier ayuda al respecto.
Gracias de antemano.
Intente imprimir el valor de 'err' antes de llamar a la función' send404() 'para ver cuál es el error real. – monsur