У меня есть ошибка, когда функция render
называется [это приложение работает на Heroku]Ошибка в Heroku с использованием нефрита
web.js:
var async = require('async');
var express = require('express');
var util = require('util');
// create an express webserver
var app = express.createServer(
express.logger(),
express.static(__dirname + '/public'),
express.bodyParser(),
express.cookieParser(),
// set this to a secret value to encrypt session cookies
express.session({ secret: process.env.SESSION_SECRET || 'secret123' }),
);
app.set('views', __dirname + 'views');
app.set('view engine', 'jade');
// listen to the PORT given to us in the environment
var port = process.env.PORT || 3000;
app.listen(port, function() {
console.log("Listening on " + port);
});
app.get('/', function (req, res) {
res.render('ok', { title : 'ok' });
});
ok.jade:
!!! 5
html(lang='en')
head
title= title
body
div#navigation
package.json:
{
"name": "package",
"version": "0.0.1",
"description": "Facebook integration, Node.js",
"dependencies": {
"express": "latest",
"jade":"0.17.0"
},
"engines": {
"node": "0.8.19",
"npm" : "1.2.10"
}
}
Ошибка:
TypeError: Cannot read property '0' of undefined
at new View (/app/node_modules/express/lib/view.js:41:65)
at Function.app.render (/app/node_modules/express/lib/application.js:486:12)
at ServerResponse.res.render (/app/node_modules/express/lib/response.js:753:7)
at /app/web.js:32:9
at callbacks (/app/node_modules/express/lib/router/index.js:161:37)
at param (/app/node_modules/express/lib/router/index.js:135:11)
at pass (/app/node_modules/express/lib/router/index.js:142:5)
at Router._dispatch (/app/node_modules/express/lib/router/index.js:170:5)
at Object.router (/app/node_modules/express/lib/router/index.js:33:10)
at next (/app/node_modules/express/node_modules/connect/lib/proto.js:199:15)
Если я отлично заменить res.render('ok', {title : 'ok'});
от res.end('some text');
работ.
Любое решение?
Спасибо!
Если вы пройдете через [экспресс-исходный код] [1] Вы увидите, что 'express/lib/view.js: 41: 65' относится к' this.defaultEngine [0] 'this означает опции. defaultEngine, переданный конструктору View, не определен. Это, в свою очередь, вызывается из этого бита кода: 'if (! View) { view = new View (name, { defaultEngine: this.get ('view engine'), root: this.get ('views'), engine: engine }); ' Это означает, что' this.get ('view engine') 'работает некорректно. Вы уверены, что нефрит настроен правильно? [1]: https://github.com/visionmedia/express/blob/master/lib/view.js –
Проблема в Jade, я уверен, но я не знаю, как решить эту проблему проблема! – 2013-02-15 04:59:54
Как вы уверены, что проблема связана с Джейд? – jcolebrand