Handlebars nodejs收到错误

时间:2015-09-16 19:12:42

标签: javascript html node.js handlebars.js

我正在编写NodeJS应用程序,它使用Handlebars来提供一些已编译的HTML。

express = require 'express'
handlebars = require 'handlebars'
fs = require 'fs'

express().get '/foo.html', ->
    fooData = {isFoo:true}

    template = handlebars.compile fs.readFileSync('foo-template.html').toString()

    htmlString = template(data)
    res.send htmlString

但是,我的foo.html文件有一些错误。

<html>
    {{#if isFoo}}
        What's up foo
    <!-- closing {{/if}} tag is missing -->
</html>

当我访问'/foo.html'时,服务器似乎工作正常,但我的请求只是挂起。一定有问题。 为什么Handlebars不会抛出某种异常?

或者,在编写foo.html时,如何确保Handlebars为我抛出异常?

1 个答案:

答案 0 :(得分:0)

Handlebars或Express如何处理错误没有任何问题。问题是我正在使用https://github.com/kriskowal/q。 Q吃任何错误并将其发送到.catch ->

我的实际代码段更像是这样:

express = require 'express'
handlebars = require 'handlebars'
fs = require 'fs'
Q = require 'q'

doStuff = ->
  def = Q.defer()
  doAsynchronousThings ->
    def.resolve()
  def.promise

express().get '/foo.html', ->

  doStuff().then ->

    fooData = {isFoo:true}

    template = handlebars.compile fs.readFileSync('foo-template.html').toString()

    htmlString = template(data)
    res.send htmlString

  # here is what I should have included
  #.catch (e) -> 
  #   console.log e