node.js, express.js - Quelle est la meilleure façon de servir un seul fichier statique?
Je l'ai déjà vu et fait usage de:
app.use("/css", express.static(__dirname + '/css'));
Je ne souhaite pas répondre à tous les fichiers à partir du répertoire racine, un seul fichier, 'ipad.htm'. Quelle est la meilleure façon de le faire avec le minimum de code, en utilisant express.js?
Vous devez vous connecter pour publier un commentaire.
res.sendFile(path_to_file);
est tout ce dont vous avez besoin; il sera automatiquement réglée à la bonne des en-têtes et de transférer le fichier (il utilise en interne le même code queexpress.static
).res.sendfile(relativePath, {root: theDirectory})
app.get('css', function (req, res) { ... })
?sendfile
est dépréciée en faveur desendFile
avec un capital de F. Ce qui a fonctionné pour moi, en utilisantuuid.js
comme mon exemple, estapp.get('js/uuid.js', function(req, res) { res.sendFile('uuid.js', {root: 'node_modules/node-uuid'}); });
res.sendfile
a été dépréciée en faveur desendFile
app.use("/", express.static(__dirname + "/index.html"))
donne une erreur 404 pour moi.app.use("/", express.static(__dirname))
œuvres.J'ai publié une petite bibliothèque pour une seule des fichiers statiques: https://www.npmjs.com/package/connect-static-file
npm install connect-static-file
var staticFile = require('connect-static-file');
app.use('/ipad', staticFile(__dirname + '/ipad.html'));
La principale différence avec l'express.statique, c'est qu'il ne se soucie pas de l'url de la requête, elle sert toujours de ce fichier si la route matchs. Il n'a pas soudainement commencer à servir à tout un répertoire si vous le nom de votre répertoire "ipad.html".
require('fs').readFile(pathOfTheFile, (err, data) => {...})
Rapide exemple de construction sur JoWie réponse:
npm install connectez-statique-fichier
npm install express
Content-Type
etContent-Length
en-têtes à l'avance.