我正在尝试使用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
任何帮助将不胜感激。提前谢谢。
答案 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