0

非常に簡単に言えば、コンパイルされた jade.js を execjs のjade-langファイルから実行する際に問題が発生しています。

jade.js を html ファイルに含める場合

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"
 => nil

nil は eval によって返されます。

どこが間違っているのか分かりますか?スタック オーバーフローを検索しましたが、これと同じ方法でこれを行う宝石をいくつか見つけましたが、システムで実行すると機能しません。execjs ランタイムとして therubyracer と node を試しました。

ご協力いただきありがとうございます!

4

1 に答える 1

0

execjs からの戻り値が関数の場合、nil を返すようです。そう:

context.eval "jade.compile.toString()"
=> "function....."

同様に

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 の派生物のみ。

于 2012-09-21T17:27:11.873 に答える