11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous, Smiley biggrin
J'utilise actuellement Express pour un projet perso, la création d'une application Web en NodeJS. Je voudrais mettre en place une page 404 qui s'affiche lorsque l'utilisateur rentre une URL qui ne peut-être gérée avec le routage défini dans Express.
J'ai tenté le code suivant :

...
var app = express(), server = require('http').createServer(app);
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/assets'));
//Routage de l'URL /dashboard
app.get('/dashboard', function (req, res) {
  ...
});
//Redirection vers 404
app.use(function(req, res){
    console.log("Send the 404 page");
    res.type('text/html');
    res.status(404);
    res.render('404'); //J'utilise le moteur de template EJS avec une feuille de style CSS
});

Donc lorsque je me rends sur l'URL /salut, la page 404 s'affiche. Mais lorsque je veux accéder à l'URL /salut/bonjour, seul mon code html apparaît, sans aucune mise en forme CSS.
Je pense que ce problème est en lien avec le express.static spécifié en début de code. En effet, mon CSS est stocké dans ce dossier assets, et express n'a pas l'air de le retrouver lorsque je demande une URL du type : /a/b
Auriez-vous une solution à me proposer quand à mon problème ?
Je vous remercie d'avance et bonne fin de journée Smiley biggrin
Modifié par vboulanger04 (05 Jun 2019 - 14:46)
après avoir défini les route utile termine avec :
app.get('*', (req, res) => {
console.log("Send the 404 page");
});

à la place de :
app.use(function(req, res){
console.log("Send the 404 page");
});

je pense que ça devrais fonctionner
Bonjour,
Je vous remercie de votre réponse. Smiley smile Malheureusement je constate toujours le même problème Smiley rolleyes .
J'ai essayé de mon côté de contourner en redirigeant vers une URL /404 :
...
//Redirection vers 404
app.get('/404', function (req, res) {
  console.log("Send 404");
  res.status(404);
  res.render('404');
});
app.use(function(req, res){
    res.redirect("/404");
});

Cela à l'air de marcher ! Mon CSS charge normalement quelque soit l'URL demandée. Mais j'aurais voulu passer par une seule fonction histoire que ça fasse plus "propre" ...
Modifié par vboulanger04 (05 Jun 2019 - 15:24)
Meilleure solution