Express.js中的EJS - Express Helpers无效 - (app)in require

时间:2011-08-18 10:10:57

标签: node.js express view-helpers ejs

我正在使用带有express.js的EJS模板引擎,我想使用视图助手。我在github上找到了这个:https://github.com/tanema/express-helpers,但是当我尝试使用它时,我收到了这个错误:

TypeError: object is not a function
at Object.CALL_NON_FUNCTION (native)
at Object. (/home/node/app/app.js:12:40)
at Module._compile (module.js:402:26)
at Object..js (module.js:408:10)
at Module.load (module.js:334:31)
at Function._load (module.js:293:12)
at Array. (module.js:421:10)
at EventEmitter._tickCallback (node.js:126:26)

而这一行是app.js上的第12行:

var helpers = require('express-helpers')(app);

如果我做到了

var helpers = require('express-helpers');

确实会抛出错误,但也无效。

app.js文件的顶部如下:

var express = require('express');
var app = express.createServer();
app.listen(34573);

// !Requires
var helpers = require('express-helpers')(app);

想法?

提前致谢!

4 个答案:

答案 0 :(得分:1)

我的坏。

事实证明我的链接是混合的,我尝试的用法是用于分叉分支。我克隆了分支,并覆盖了默认的https://github.com/masahiroh/express-helpers,代码按照预期的正确分支工作。

非常感谢!

答案 1 :(得分:1)

你应该传递给app.locals():

var helpers = require('express-helpers')();

app.locals ({
        "form_tag" : helpers.form_tag,
        "form_tag_end" : helpers.form_end_tag,
        "link_to" : helpers.link_to,
        "input_field_tag" : helpers.input_field_tag,
        "submit_tag" : helpers.submit_tag
            ...
        });

答案 2 :(得分:1)

对不起,我知道这已经很晚了,不过我是你所说的叉子的作者。它是express-helpers模块的维护版本,应该用于将来的版本。

您遇到的问题是在调用app.listen()之前应该要求帮助程序。 app.listen()应该是你文件中的最后一件事,特别是关于应用程序设置的任何内容。

答案 3 :(得分:0)

你也可以使用这个npm包提供更好的&延长的帮助者。

https://www.npmjs.com/package/native-view-helpers

npm install native-view-helpers --save

希望它能帮到某人。