首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSHTML不使用Express.js在Node.js中

问JSHTML不使用Express.js在Node.js中
EN

Stack Overflow用户
提问于 2012-08-09 11:18:22
回答 5查看 3.4K关注 0票数 3

我似乎不想让JSHTML在Express.js上充当Node.js上的模板引擎。当我安装我的Express.js应用程序并为我创建一个基本应用程序时,我运行它就会得到以下错误消息:

代码语言:javascript
复制
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为我创建的):

代码语言:javascript
复制
/**
 * 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诉0.8.5
  • Express.js@3.0.0rc2
  • jshtml@0.2.3
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-08-14 07:48:55

JSHTML目前使用Express.js 2。有计划让引擎与Express.js 3一起工作,但目前我正忙于享受这个夏天!希望在冬天能解决这个问题!

票数 3
EN

Stack Overflow用户

发布于 2013-01-13 14:45:29

根据https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x,您可以使用app.engine来实现2-x兼容性。

例如:

代码语言:javascript
复制
var fs = require("fs");
var jshtml = require("jshtml");
app.engine("jshtml", function (path, options, fn) {
    fs.readFile(path, 'utf8', function (err, str) {
        if (err) return fn(err);
        str = jshtml.compile(str,options)(options).toString();
        fn(null, str);
    });
});
票数 2
EN

Stack Overflow用户

发布于 2012-08-09 15:06:47

consolidate.js被用作许多模板引擎和表达式之间的桥梁。如果您的引擎不受支持,请签出源代码。大多数引擎需要15行代码才能实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11882236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档