Bonjour à tous,

J'ai utilisé generator-express (donc avec yeoman) pour me créer un projet Express.
Depuis j'ai pas mal avancé, mais lorsque j'essaie d'ajouter des routes dans un nouveau contrôleur, ça ne fonctionne pas :

Code fichier app/controllers/recherche.js : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var express = require('express'),
  router = express.Router(),
  db = require('../models'),
  s = require('../data/static');
 
 
module.exports = function (app) {
  app.use('/recherche', router);
  console.log('recherche.js : fonction exportée');
};
 
 
router.post('/recherche', function(req, res, next) {
  console.log('POST : ' + req);
  console.log('recherche.js : /recherche');
  res.render('index', {
    title: 'Recherche',
    s: s  // Données statiques
  });
 
});
 
 
console.log('recherche.js : racine');

Voici où ce code est chargé :

Code fichier app/controllers/home.js : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
var express = require('express');
var glob = require('glob');
 
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var compress = require('compression');
var methodOverride = require('method-override');
 
module.exports = function(app, config) {
  app.set('views', config.root + '/app/views');
  app.set('view engine', 'jade');
 
  // app.use(favicon(config.root + '/public/img/favicon.ico'));
  app.use(logger('dev'));
  app.use(bodyParser.json());
  app.use(bodyParser.urlencoded({
    extended: true
  }));
  app.use(cookieParser());
  app.use(compress());
  app.use(express.static(config.root + '/public'));
  app.use(methodOverride());
 
  var controllers = glob.sync(config.root + '/app/controllers/*.js');
  controllers.forEach(function (controller) {
    require(controller)(app);
  });
 
  // Initialisation de socket.io
  require(config.root + '/config/io')(app.io);
 
  app.use(function (req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
  });
 
  if(app.get('env') === 'development'){
    app.use(function (err, req, res) {
      res.status(err.status || 500);
      res.render('error', {
        message: err.message,
        error: err,
        title: 'error'
      });
    });
  }
 
  app.use(function (err, req, res) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: {},
      title: 'error'
    });
  });
 
};

Or, au lancement de l'application, j'ai :
Citation Envoyé par node.js / application
$ npm start

> mon-application-com@0.0.1 start /mon-répertoire-source/04-source
> node index.js

recherche.js : racine
recherche.js : fonction exportée
socket.io : ok.
Serveur démarré : http://localhost:3000
GET / 304 287.649 ms - -
GET /css/styles.css 304 2.149 ms - -
GET /js/jquery-2.1.1.min.js 304 0.965 ms - -
GET /js/front.js 304 2.749 ms - -
GET /img/icone.png 304 0.797 ms - -
Error: Not Found
at Layer.handle (/mon-répertoire-source/04-source/config/express.js:35:15)
at trim_prefix (/mon-répertoire-source/04-source/node_modules/express/lib/router/index.js:240:15)
at /mon-répertoire-source/04-source/node_modules/express/lib/router/index.js:208:9
at Function.proto.process_params (/mon-répertoire-source/04-source/node_modules/express/lib/router/index.js:269:12)
at next (/mon-répertoire-source/04-source/node_modules/express/lib/router/index.js:199:19)
at /mon-répertoire-source/04-source/node_modules/express/lib/router/index.js:137:5
at /mon-répertoire-source/04-source/node_modules/express/lib/router/index.js:250:10
at next (/mon-répertoire-source/04-source/node_modules/express/lib/router/index.js:160:14)
at next (/mon-répertoire-source/04-source/node_modules/express/lib/router/index.js:176:38)
at next (/mon-répertoire-source/04-source/node_modules/express/lib/router/index.js:176:38)
POST /recherche 404 5.983 ms - -
Je suis donc allé voir / (ce qui a chargé les bonnes choses), puis j'ai cliqué sur le bouton qui est fabriqué de cette manière dans un template jade :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
    form#search(method="post" action="/recherche")
      input#search_input
      button#search_btn
        span #{s.home.recherche}
Qu'en pensez-vous ? Si je place le code de recherche.js dans le contrôleur de base (app/controllers/home.js), tout se passe bien.

Merci d'avance,
Le Barde.