web-dev-qa-db-fra.com

Erreur: ENOENT: aucun fichier ou répertoire de ce type, stat '/public/main.html' à Error (native)

Ceci est mon fichier server.js:

var express = require('express'),
    app = express();  
app 
    .use(express.static('./public'))
    .get('*',function (req,res) {
        res.sendfile('/public/main.html');
        })
 .listen(3000);

C'est mon main.html:

<!DOCTYPE html>
<html>
    <head>
        <titel>Contacts</titel>
    <base href'/'> 
    </head>
    <body>
        <div class="container">
         <div class="page-header">
             <h1>Contatcs</h1>
         </div>
        </div> 
    </body>
</html>

Et la structure du dossier:

15
pradeep murugan

Puisque le serveur et le fichier d'index sont tous deux DANS le répertoire "public", vous pouvez simplement utiliser:

res.sendfile('./main.html');

Pour répondre à la question dans les commentaires: Dans Express 4.x, la méthode sendfile a été remplacée par la méthode sendFile (all minuscule -> camelCase). Probablement juste un oubli dans les premières versions, qui a été corrigé dans la dernière.

6
Bernard Saucier
res.sendfile('/public/main.html');

devrait être changé en 

res.sendfile('./public/main.html');
1
Guy Korland

Cette solution fonctionne pour moi:

res.sendfile('./main.html');
1
Niloo

J'ai eu un problème similaire lorsque j'ai fait référence au dossier dist .

app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist/project-name/index.html'));
});
1
akshaymittal143

Vous avez manqué le point . Gardez à l'esprit le répertoire relatif est 

res.sendfile('./public/main.html');
1
vkstack

J'ai eu le même problème. Après avoir envoyé un courriel à heroku, le mien était un problème de sensibilité à la casse. Un de mes fichiers était en majuscule et je devais faire des ajustements à partir de là. 

0
jared thomas

Pour moi en utilisant le "." dans le chemin n'a pas fonctionné, à la place, je l'ai modifié comme suit:

res.sendFile(__dirname + '/public/main.html');
0
Shubham joshi