我似乎並沒有讓JSHTML在Node.js的Express.js上作爲模板引擎工作。當我安裝我的Express.js的應用程序,爲我創建了一個基本的應用程序,我運行它,我得到這個錯誤信息:JSHTML不能在Node.js中使用Express.js
500 TypeError: Property 'engine' of object #<View> is not a function
at View.render (/Users/blackbook/nodejs/ds/node_modules/express/lib/view.js:75:8)
at Function.app.render (/Users/blackbook/nodejs/ds/node_modules/express/lib/application.js:504:10)
at ServerResponse.res.render (/Users/blackbook/nodejs/ds/node_modules/express/lib/response.js:677:7)
at exports.index (/Users/blackbook/nodejs/ds/routes/index.js:7:7)
at callbacks (/Users/blackbook/nodejs/ds/node_modules/express/lib/router/index.js:165:11)
at param (/Users/blackbook/nodejs/ds/node_modules/express/lib/router/index.js:139:11)
at pass (/Users/blackbook/nodejs/ds/node_modules/express/lib/router/index.js:146:5)
at Router._dispatch (/Users/blackbook/nodejs/ds/node_modules/express/lib/router/index.js:173:5)
at Object.router (/Users/blackbook/nodejs/ds/node_modules/express/lib/router/index.js:33:10)
at next (/Users/blackbook/nodejs/ds/node_modules/express/node_modules/connect/lib/proto.js:190:15)
我app.js看起來是這樣的(這是什麼Express.js爲我創建):
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes')
, http = require('http')
, path = require('path');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jshtml');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
app.use(express.errorHandler());
});
app.get('/', routes.index);
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
我有這個安裝:
- Node.js的v.0.8.5
- [email protected]
- [email protected]
你使用npm安裝了jshtml嗎? 無論如何,我認爲express 3.0不支持jshtml呢。 Express 3.0已經改變了很多佈局上的東西..嘗試使用Express 2.0或只是改變玉石和測試。 – 2012-08-09 14:01:28
@RafaelMotta是的,我已經安裝了nsh的jshtml。我試過使用Express 2.0,但是我也無法使它工作。我尋找一個模板引擎,可以使用我的模板「masterpage」,和jshtml以一個不錯的方式。我已經研究過EJS,但是這似乎是支持它的。我知道玉能做到,但我不喜歡用玉來寫我的模板。 – Raskolnikoov 2012-08-09 14:51:05
我覺得express提供了母版頁的概念,而不是模板引擎。在Express 3.0中,您不再有佈局。但嘗試使用生態模板..它具有母版頁的概念。這就像EJS,但你用咖啡寫代碼。 – 2012-08-09 17:05:21