Ho i seguenti percorsi di file:Come faccio a servire file statici tramite Node.js localmente?
file:///Users/MyName/Developer/sitename/scripts (contains all .js files..)
file:///Users/MyName/Developer/sitename/css (contains all .css files..)
file:///Users/MyName/Developer/sitename/images (contains all .jpg/png/etc. files..)
file:///Users/MyName/Developer/sitename/sitename.html
file:///Users/MyName/Developer/sitename/server.js
All'interno sitename.html
si carica tutti i file necessari come segue per esempio:
<html>
<head>
<script src="scripts/somefile.js"></script>
</head>
...
</html>
Così ogni volta che apro file:///Users/MyName/Developer/sitename/sitename.html
tutto funziona bene.
Tuttavia, ogni volta che provo a caricare file:///Users/MyName/Developer/sitename/sitename.html
tramite un server Node.js locale che ho (posizione del file server: file:///Users/MyName/Developer/sitename/server.js
) messa a punto nel modo seguente:
var http = require("http");
var fs = require("fs");
fs.readFile('./sitename.html', function (err, html)
{
if (err) throw err;
http.createServer(function (request,response)
{
// serve site
if (request.url === "/")
{
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html);
}
response.end();
}).listen(8080);
});
sitename.html
viene rilevato e caricato, ma tutti gli altri i file che si suppone debbano caricarsi non riescono a caricare perché a tutti viene assegnato il prefisso http://localhost:8080/
(ad esempio, http://localhost:8080/scripts/somefile.js
non è un percorso file valido).
Sembra che non appena si crea il server (all'interno http.createServer(.....);
) i cambiamenti di contesto e la directory padre diventa ora http://localhost:8080/
invece di file:///Users/MyName/Developer/sitename/
che ha un senso immagino, ma non è molto utile quando si utilizzano i file che sono ancora memorizzati localmente.
Come posso risolvere il problema? Il fatto che sto memorizzando server.js
(solo per ora) nella stessa directory rende le cose ancora più confuse?
Grazie!
Hey, grazie mille per la risposta. Dò un'occhiata a quelle 2 opzioni che hai suggerito. Ma solo perché sono nuovo in questo, potresti approfondire un po 'di più: quindi ogni volta che qualcuno crea un'app web e usa Node.js per servire l'app, e l'app ha un sacco di file statici (ovviamente), vuol dire che hanno sempre bisogno di usare "plug-in" come quello che hai suggerito, quando testano la loro app localmente? Sembra un po 'strano, no, quel nodo non viene fornito con un'opzione predefinita per specificare il percorso della cartella principale per tutti i file statici che verranno pubblicati.? Grazie ancora per il tuo aiuto! Il nodo –
ti offre gli strumenti per servire quei file, devi semplicemente implementarlo. Ecco perché esistono così tanti moduli, perché la funzionalità semplicemente non viene fuori dalla scatola. Puoi sicuramente servire il file con Node.js ma dovresti implementare un percorso nel tuo server che riconosca una richiesta per "/style.css" e fagli leggere quel file dal disco. –
Grazie mille per aver chiarito che Jeff –