很简单,我在运行execjs中的jade-lang文件编译的jade.js时遇到了问题。
如果我在html文件中包含jade.js
jade.compile返回一个函数。
当我执行以下操作时:
require 'execjs'
source = <<-src
var window = {};
#{open('jade.js').read}
var jade = window.jade;
src
context = ExecJS.compile source
context.eval "jade.compile"
=> nileval返回nil。
你知道我哪里错了吗?我已经搜索了堆栈溢出,甚至找到了几个gem,它们的工作方式与我一样,但当我在我的系统上执行时,它不起作用。我尝试使用therubyracer和node作为我的execjs运行时。
谢谢你的帮忙!
发布于 2012-09-22 01:27:12
当从execjs返回的是一个函数时,它似乎返回nil。所以:
context.eval "jade.compile.toString()"
=> "function....."Likewile
context.eval "jade.compile(#{template.to_json}).toString()"
=> "function...."和
context.eval "jade.compile(#{template.to_json})()"
=> "some html"这是有意义的,因为execjs/external_runtime.rb的extract_result方法(在编写本文时是第62行)使用JSON.decode,它不会对函数进行解码。仅为object的导数。
https://stackoverflow.com/questions/12534308
复制相似问题