请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

SyntaxError: Unexpected token ) while compiling ejs

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
}


0 回复 有任何疑惑可以回复我~
  • 提问者 浮生_梦 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-06-07 15:39:16
  • 提问者 浮生_梦 #2
    我在网上检测ejs语法。提示了unexpected space or tab 我还以为是开头哪里不能空格和tab混用。。没想到是中间空格的原因,也没见ejs的官网特意强调这个语法。
    回复 有任何疑惑可以回复我~ 2017-06-07 15:41:56
提问者 浮生_梦 2017-06-06 16:25:20

'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

}


换了一下版本。还是不行。但是看了一下也没发现语法错误(也可能是没有找到)。

所以把整个代码都复制过来了。麻烦老师看一下。


0 回复 有任何疑惑可以回复我~
Scott 2017-06-06 10:04:05

感觉不是,检查下模板的语法写的有没有错误


不过可以尝试,把  ejs 先卸载掉,然后装一个老一点的版本,比如 2.3.4 试试

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信