Erreur: Échec de la recherche de la vue dans l'Express

Note: ma réponse automatique à la fin de l'après

Je suis en train de faire une meilleure expérience de nodeJS et je n'aime pas vraiment pour obtenir tous les script dans un fichier.

donc, à la suite d'un post ici, j'utilise cette structure

./
 config/
   enviroment.js
   routes.js
 public/
   css/
     styles.css
   images
 views
   index
     index.jade
   section
     index.jade
   layout.jade
 app.js

Mes fichiers sont maintenant:

app.js

var express = require('express');
var app = module.exports = express.createServer();

require('./config/enviroment.js')(app, express);
require('./config/routes.js')(app);

app.listen(3000);

enviroment.js

module.exports = function(app, express) {
    app.configure(function() {
        app.use(express.logger());
        app.use(express.static(__dirname + '/public'));
        app.set('views', __dirname + '/views');
        app.set('view engine', 'jade'); //extension of views

    });

    //development configuration
    app.configure('development', function() {
        app.use(express.errorHandler({
            dumpExceptions: true,
            showStack: true
        }));
    });

    //production configuration
    app.configure('production', function() {
        app.use(express.errorHandler());
    });

};

routes.js

module.exports = function(app) {

    app.get(['/','/index', '/inicio'], function(req, res) {
        res.render('index/index');
    });

    app.get('/test', function(req, res) {
        //res.render('index/index');
    });

};

mise en page.jade

!!! 5
html
    head
        link(rel='stylesheet', href='/css/style.css')
        title Express + Jade
    body
        #main
            h1 Content goes here
            #container!= body

index/index.jade

h1 algoa

L'erreur que j'obtiens est:

D'erreur: Échec de la recherche de la vue "index/index"
à une Fonction.render (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\application.js:495:17)
lors du rendu (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\response.js:614:9)
au ServerResponse.render (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\response.js:638:5)
au c:\xampp\htdocs\nodejs\buses\config\routes.js:4:7
lors de rappels (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:177:11)
au param (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:151:11)
au col (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:158:5)
au Routeur._dispatch (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:185:4)
à l'Objet.routeur [gérer] (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:45:10)
à la prochaine (c:\xampp\htdocs\nodejs\buses\node_modules\express\node_modules\connect\lib\proto.js:191:15)

Mais je ne sais pas vraiment quel est le problème...

Je suis de départ de la pensée est parce que les modules exportations...

Réponse:
Loin de là l'unique solution que j'ai trouvé est de changer le lieu que j'ai défini app.set ("vues") et des points de vue moteur

Je l'ai déplacé à la app.js et maintenant, c'est bien le travail.

var express = require('express');
var app = module.exports = express.createServer();


require('./config/enviroment.js')(app, express);

app.set('views', __dirname + '/views');
app.set('view engine', 'jade');

require('./config/routes.js')(app);

app.listen(3000);

Je ne comprends pas vraiment la logique derrière cela, mais je vais supose il en avoir un.

  • Je suppose que vous êtes encore sur express 2.x, puisque les choses sont un peu différentes dans les 3.x
  • peut être que. je suis en suivant les guides de expressjs.com mais je ne vois pas du tout de express3 :s
  • ouais, il est toujours en alpha. si vous avez installé récemment avec npm, vous devriez l'avoir (3.0.0 alpha). Mieux d'en faire un npm ls pour voir quelle version vous avez.
  • Désolé j'ai oublié d'ajouter, j'ai 3.0.0alpha1 il n'y a aucun moyen que je peux utiliser la v2 ou, si c'est mieux d'avoir toute la documentation?
  • Lorsque la question de la réponse auto est mieux que la accepté de répondre...
InformationsquelleAutor nax | 2012-04-18