Ошибка: не удалось просмотреть представление в Express

Примечание: мой автоматический ответ в конце поста

Я пытаюсь улучшить работу с nodeJS, и мне не очень нравится получать весь скрипт в одном файле.

Итак, следуя сообщению здесь, я использую эту структуру

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

Мои файлы прямо сейчас:

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());
    });

};

route.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');
    });

};

layout.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

Ошибка, которую я получаю:

Ошибка: не удалось найти представление «индекс/индекс» в Function.render (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\application.js:495:17) при рендеринге (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\response.js:614:9) в ServerResponse.render (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\response.js:638:5) в c:\xampp\htdocs\nodejs\buses\config\routes.js:4:7 при обратных вызовах (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:177:11) в параметре (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:151:11) на проходе (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:158:5) на Router._dispatch (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:185:4) в Object.router [как дескриптор] (c:\xampp\htdocs\nodejs\buses\node_modules\express\lib\router\index.js:45:10) далее (c:\xampp\htdocs\nodejs\buses\node_modules\express\node_modules\connect\lib\proto.js:191:15)

Но я действительно не знаю, в чем проблема...

Я начинаю думать, что это потому, что модули экспортируют...

Ответ: Далеко единственное решение, которое я нашел, состоит в том, чтобы изменить место, которое я определил, app.set('views') и механизм просмотра

. Я переместил его в app.js, и теперь он работает хорошо.

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);

Я не совсем понимаю логику этого, но предположу, что она есть.

56
задан nax 18 April 2012 в 20:20
поделиться