SyntaxError: Unexpected token ) while compiling ejs
来源:4-3 第四天 自动回复各种消息
浮生_梦
2017-06-05
SyntaxError: Unexpected token ) while compiling ejs.
是因为版本的原因吗
ejs 2.5.6
node 6.10.2
3回答
-
我目测是看到一些多余的空格,比如 %>]] 的 > 后面,以及 [[<% 的 < 前面。
试下这段源码:
'use strict' var ejs = require('ejs') var heredoc = require('heredoc') var tpl = heredoc(function() {/* <xml> <ToUserName><![CDATA[<%= toUserName %>]]></ToUserName> <FromUserName><![CDATA[<%= fromUserName %>]]></FromUserName> <CreateTime><%= createTime %></CreateTime> <MsgType><![CDATA[<%= msgType %>]]></MsgType> <% if (msgType === 'text') { %> <Content><![CDATA[<%- content %>]]></Content> <% } else if (msgType === 'image') { %> <Image> <MediaId><![CDATA[<%= content.mediaId %>]]></MediaId> </Image> <% } else if (msgType === 'voice') { %> <Voice> <MediaId><![CDATA[<%= content.mediaId %>]]></MediaId> </Voice> <% } else if (msgType === 'video') { %> <Video> <MediaId><![CDATA[<%= content.mediaId %>]]></MediaId> <Title><![CDATA[<%= content.title %>]]></Title> <Description><![CDATA[<%= content.description %>]]></Description> </Video> <% } else if (msgType === 'music') { %> <Music> <Title><![CDATA[<%= content.title %>]]></Title> <Description><![CDATA[<%= content.description %>]]></Description> <MusicUrl><![CDATA[<%= content.musicUrl %>]]></MusicUrl> <HQMusicUrl><![CDATA[<%= content.hqMusicUrl %>]]></HQMusicUrl> <ThumbMediaId><![CDATA[<%= content.thumbMediaId %>]]></ThumbMediaId> </Music> <% } else if (msgType === 'news') { %> <ArticleCount><%= content.length %></ArticleCount> <Articles> <% content.forEach(function(item) { %> <item> <Title><![CDATA[<%= item.title %>]]></Title> <Description><![CDATA[<%= item.description %>]]></Description> <PicUrl><![CDATA[<%= item.picUrl %>]]></PicUrl> <Url><![CDATA[<%= item.url %>]]></Url> </item> <% }) %> </Articles> <% } %> </xml> */}) var compiled = ejs.compile(tpl) exports = module.exports = { compiled: compiled }
022017-06-07 -
浮生_梦
提问者
2017-06-06
'use strict'
var ejs = require('ejs')
var heredoc = require('heredoc')
var tpl = heredoc(function () {
/*
<xml>
<ToUserName><![CDATA[ <%= toUserName %> ]]></ToUserName>
<FromUserName><![CDATA[ <%= fromUserName %> ]]></FromUserName>
<CreateTime> <%= createTime %> </CreateTime>
<MsgType><![CDATA[<%= msgType %>]]></MsgType>
<% if (msgType === 'text') { %>
<Content><![CDATA[ <%= content %> ]]></Content>
<% }else if(msgType === 'image') { %>
<Image>
<MediaId><![CDATA[ <%= content.mediaId %> ]]></MediaId>
</Image>
<% }else if(msgType === 'voice') { %>
<Voice>
<MediaId><![CDATA[ <%= content.mediaId %> ]]></MediaId>
</Voice>
<% }else if(msgType === 'video') { %>
<Video>
<MediaId><![CDATA[ <%= content.mediaId %> ]]></MediaId>
<Title><![CDATA[ <%= content.title %> ]]></Title>
<Description><![CDATA[ <%= content.description %> ]]></Description>
</Video>
<% }else if(msgType === 'music') { %>
<Music>
<Title><![CDATA[ <%= content.title %> ]]></Title>
<Description><![CDATA[ <%= content.description %> ]]></Description>
<MusicUrl><![CDATA[ <%= content.musicUrl %> ]]></MusicUrl>
<HQMusicUrl><![CDATA[ <%= content.hqMusicUrl %> ]]></HQMusicUrl>
<ThumbMediaId><![CDATA[ <%= content.thumbMediaId %> ]]></ThumbMediaId>
</Music>
<% }else if(msgType === 'news') { %>
<ArticleCount><%= content.length %></ArticleCount>
<Articles>
<% content.forEach(function(item)){ %>
<item>
<Title><![CDATA[<%= item.title %>]]></Title>▒|
<Description><![CDATA[<%= item.description %>]]></Description>
<PicUrl><![CDATA[<%= item.picUrl %>]]></PicUrl>
<Url><![CDATA[<%= item.Url %>]]></Url>
</item>
<% }) %>
</Articles>
<% } %>
</xml>
*/
})
var compiled = ejs.compile(tpl)
exports = module.exports = {
compiled:compiled
}
换了一下版本。还是不行。但是看了一下也没发现语法错误(也可能是没有找到)。
所以把整个代码都复制过来了。麻烦老师看一下。
00 -
Scott
2017-06-06
感觉不是,检查下模板的语法写的有没有错误
不过可以尝试,把 ejs 先卸载掉,然后装一个老一点的版本,比如 2.3.4 试试
00