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 :
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 :Envoyé par node.js / application
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.
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}
Merci d'avance,
Le Barde.
Partager