Node.js:SyntaxError:意外的令牌:编译ejs时

时间:2015-07-16 07:56:53

标签: javascript node.js filter ejs

我正在尝试使用Node.JS将过滤器应用于EJS,我收到以下错误。我希望消息内容以大写形式显示。

D:\Apps\Templating\ejs>node server.js
D:\Apps\node_modules\ejs\lib\ejs.js:470
      throw e;
            ^
SyntaxError: Unexpected token : while compiling ejs
    at Function (native)
    at Object.Template.compile (D:\Apps\node_m
odules\ejs\lib\ejs.js:460:12)
    at Object.compile (D:\Apps\node_modules\ej
s\lib\ejs.js:288:16)
    at handleCache (D:\Apps\node_modules\ejs\l
ib\ejs.js:147:16)
    at Object.exports.render (D:\Apps\node_mod
ules\ejs\lib\ejs.js:315:10)
    at Object.<anonymous> (D:\Apps\Templating\
ejs\server.js:3:17)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)

这是我的代码-server.js:

var ejs = require('ejs');
var template = "<%=: message | upcase %>";
console.log(ejs.render(template,{message : 'hello ejs with filter'}));

我已经使用包管理器安装了ejs,它适用于带有过滤器(:)的普通脚本。下载的EJS版本是最新版本2.3.3,节点版本是0.12.4。

npm install ejs

任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:6)

当前版本的ejs(v2.3.3)不支持从版本2中删除的过滤器。如果要使用过滤器,则需要安装1.x版本:< / p>

$ npm i ejs@1.x

答案 1 :(得分:0)

在ejs v2中你不得不但没有=或 - 如果有正常的代码或函数而不是对象的代码 如果你有一个对象,你必须以=或 - 开头 符合Express视图系统 中间JavaScript的静态缓存 条件码的无缓冲代码等<% code %> 默认情况下使用<%= code %>转义html 使用<%- code %>进行非转义缓冲 支持标签定制 过滤器支持设计师友好的模板 包括 客户端支持 使用<% code -%><% -%><%= code -%><%- code -%>进行换行符 查看更多相关信息: https://github.com/tj/ejs