【问题标题】:Running CoffeeKup on Rhino?在 Rhino 上运行 CoffeeKup?
【发布时间】:2012-01-03 23:45:07
【问题描述】:

我正在尝试让 CoffeeKup 与 Mozilla 的 Rhino 引擎一起工作。到目前为止没有多少运气。我正在尝试这个简单的模板:

templates ?= {}
templates.first = ->
    doctype 5
    html ->
        head ->
            title "#{@title}"
        body ->
            h1 "#{@hello}"

compile into Javascript然后尝试使用渲染

CoffeeKup.render(templates.first, {title: 'Say Hello', hello: 'Hello World!'});

但它失败了:

org.mozilla.javascript.EcmaError: SyntaxError: invalid return (CoffeeKup#304(Function)#230)

在 Javascript 版本的 coffeekup.coffee 中,第 304 行是这一行:

return new Function('data', code);

code 第 230 行(最后一行)是这样的:

).call(data);return __ck.buffer.join('');

有什么不寻常的地方吗?或者这可能是 Rhino 的错误?

【问题讨论】:

  • 您确定您链接的代码在 Node 中也可以工作吗?它为我提供了“...”辅助提示,就像它正在等待更多输入一样,它也会在 Spidermonkey 中引发 SyntyxError。
  • 我不使用 Node,所以没有。但即使在我看来它看起来不错,但这并不意味着那里没有微妙的错误。如果您简化它或进行任何修改,您是否能够让 Node 使用它?
  • 我创建了this HTML file,在 Firefox 中查看时,警报内容为:<!DOCTYPE html><html><head><title>Say Hello</title></head><body><h1>Hello World!</h1></body></html>,因此代码看起来没问题。

标签: javascript coffeescript rhino coffeekup


【解决方案1】:

如果它适用于 Node/V8 + 浏览器但不适用于 Rhino,您可以相当肯定它是 Rhino 特有的东西(但不一定是错误的)。在coffeekup.coffee 顶部的较长评论中,它说它将在 Node 或浏览器上运行,所以很可能是这种情况。

要真正知道出了什么问题,您需要一个调试器,您可以在其中单步执行代码(我不知道如何在 Rhino 上执行此操作,可能通过 Eclipse 甚至可能是 jdb如果您手头有所有资源并且非常精通 Java)。如果您发现一些合理的琐碎事情,请尝试提交issue,但 CoffeeKup 在过去几个月似乎没有看到太多活动。如果您准备迎接挑战,请分叉、修复和拉取请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多