我正在编写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为我抛出异常?
答案 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