【问题标题】:Trying to render handlebar template in an express handlebars file (Uncaught ReferenceError: handlebars is not defined)尝试在快速车把文件中呈现车把模板(未捕获的 ReferenceError:未定义车把)
【发布时间】:2020-01-16 08:25:00
【问题描述】:

问题陈述 我能够呈现来自 DB 的消息。但是当我试图从 javascript 文件中呈现消息时,它会说 未捕获的 ReferenceError:未定义车把

我做了什么

我有一个文件 chat.hbs(快速车把) 我渲染了文件

res.render('chat', {chatroom, chats,user})

这使我能够从数据库中获取聊天详细信息并进行渲染。 呈现数据库中的消息后,我想使用 socket.io 在聊天室中开始两方之间的聊天。

chat.hbs 内部

  <div class="chat__main">
        {{!-- For messages from Database --}}
        <div class="chat__messages">
          {{#each chats}}
            <div class="message">
                <p>
                    <span class="message__name">{{sender.name}}</span>
                    <span class="message__meta">{{moment createdAt format="lll"}}</span>
                </p>
                <p> {{chat}}</p>
            </div>
         {{/each}}
        {{!-- For messages from clientside socket.io via handlebars --}}
        <div id="messages"></div> 
        </div> 
   </div>

车把模板

        <script id="message-template" type="text/x-handlebars-template">
    <div class="message">
        <p>
            <span class="message__name">\{{username}}</span>
            <span class="message__meta">\{{createdAt}}</span>
        </p>
        <p>\{{message}}</p>
    </div>
    </script>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.2.0/handlebars.min.js"></script>

chat.hbs文件中script标签内的客户端JS

  <script>
       socket.on('message', (message) => {
                const html = handlebars.render(messageTemplate, {
                    username: message.userName,
                    message: message.text,
                    createdAt: moment(message.createdAt).format("Do MMM YYYY, h:mm a")
                })
                $messages.insertAdjacentHTML('beforeend',html)

            })
     </script>

【问题讨论】:

  • 您确定在客户端 JS (chat.hbs) 中是 handlebars.render 而不是 Handlebars.render? [见handlebarsjs.com/]
  • 没问题,如果有帮助,请将下面的答案标记为正确,以便其他人知道:)
  • 它是 Handlebars.compile 请编辑您的答案,以便我将其标记为正确
  • 完成,抱歉

标签: node.js handlebars.js express-handlebars


【解决方案1】:

应该是Handlebars.compile,而不是handlebars.render [参见https://handlebarsjs.com/]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    相关资源
    最近更新 更多