Remarque: je suis très nouveau pour exprimer

var express = require('express');
var app = express();

app.get('/', function(req, res) {
   res.send('id: ' + req.params.id + ' and name: ' + req.params.name);
});
var things = require('./things/things.js');

//both index.js and things.js should be in same directory
app.use('/things', things);
//Simple request time logger
app.use('/',function(req, res, next){
   console.log("A new request received at " + Date.now());

   //This function call is very important. It tells that more processing is
   //required for the current request and is in the next middleware
   //function/route handler.
   next();
});

app.listen(3000);

J'apprends les fonctions du middleware et j'essaie d'afficher un message console.log lorsque je vais sur localhost: 3000, mais rien ne s'affiche dans ma console, que me manque-t-il ici?

10
Snorlax 6 août 2017 à 08:52

2 réponses

Meilleure réponse

Le problème est qu'Express transmet les requêtes aux middleware et aux gestionnaires de route dans l'ordre de leur déclaration. Si l'un d'entre eux est capable de gérer la requête (en renvoyant une réponse), tout autre middleware ou gestionnaire de route correspondant qui a été déclaré ultérieurement ne sera pas appelé.

C'est ce qui se passe dans votre situation, où votre middleware est déclaré après les gestionnaires de route.

Essayez de déplacer votre middleware vers l'avant:

app.use('/',function(req, res, next){
   console.log("A new request received at " + Date.now());
   next();
});

app.get('/', function(req, res) {
   res.send('id: ' + req.params.id + ' and name: ' + req.params.name);
});

var things = require('./things/things.js');

app.use('/things', things);
15
robertklep 6 août 2017 à 07:18

Tout d'abord, vous devez vérifier la structure des fichiers. Si index.js et things.js sont dans le même répertoire, vous devez changer la fonction require en var things = require('./things.js');

Ensuite, vérifiez que vous cherchez au bon endroit, le message console.log() apparaîtra dans la fenêtre du terminal où vous avez chargé le serveur express, pas dans la console de votre navigateur Web.

2
harshpatel991 6 août 2017 à 06:18