Heroku使用玉的错误
当我们调用render
函数时出现错误[这个程序在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)
如果我replaceres.render('ok', {title : 'ok'});
通过res.end('some text');
完美的作品。
任何解决scheme
谢谢!
最新版本的Express似乎使用app.engine()而不是app.set('view engine')( doc )
app.engine('jade', require('jade').__express);
你可以有更多的细节看这个函数的来源 。
这可能会解决你的问题。
另外,将“/”添加到您的视图的path(或删除它,因为它是默认的快递)
编辑:我检查是否“视图引擎”设置被用在某个地方, 而且就像本杰明说,我不明白你为什么调用app.set('view engine')
不起作用。
编辑2:我只是试图运行你的代码,并有几个故障点。 这是一个固定的web.js文件在我的本地计算机上工作:
var express = require('express'); var util = require('util'); // create an express webserver var app = express( 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' }); });
更新日志:
- 移除
require('async')
因为它是未使用的,而不是在package.json中 - 使用express()而不是弃用的“.createServer”
- 添加缺less
/
在视图目录path设置 - 在
express.session
调用后删除了逗号
Todo在你身边: – 在你的ok.jade
文件中的html
之前删除缩进。
- 为什么我的json对象的`email`属性不显示在我的模板中?
- Node.js JSON.stringify()导致“ 在输出。 无法用Jqueryparsing
- 带有nodejs jade和ajax的静态导航栏和页脚
- 如何在node.js中实现jade模板的inheritance
- 快速错误:EMFILE,打开的文件太多
- 如何正确的使用JavaScript和Jade一起使用render中传入的参数
- 翡翠中的variables,全局对象和console.log
- 如何在Node.JS中分别接收req.body.model的所有对象而不是它的所有variables?
- 在模板中循环,在用玉进行编译时,“无法读取属性长度”的“未定义”错误