如何编译用于PhantomJS的ClojureScript代码?

如何编译用于PhantomJS的ClojureScript代码?,phantomjs,clojurescript,Phantomjs,Clojurescript,我正在尝试用ClojureScript编写PhantomJS脚本。我以节点为目标,使用phantomjs节点[1]。我有一个工作的基本例子: (def phantom (js/require "phantom")) (defn -main [& args] (-> phantom (.create (fn [browser] (-> browser (.createPage (fn [page] (-> pag

我正在尝试用ClojureScript编写PhantomJS脚本。我以节点为目标,使用phantomjs节点[1]。我有一个工作的基本例子:

(def phantom (js/require "phantom"))
(defn -main [& args]
  (-> phantom
    (.create (fn [browser]
      (-> browser
        (.createPage (fn [page]
          (-> page
            (.open "http://google.com" (fn [status]
              (if (= status "success")
                (-> page (.render "example.png")))
              (-> browser .exit)))))))))))
现在,如果我使用PhantomJS网页对象的
evaluate
函数[2],我会发现以下错误:

phantom stdout: ReferenceError: Can't find variable: <namespace here>
如何防止PhantomJS的webpage对象中要计算的代码被命名为CLJS名称空间?第二,我还有其他选择吗

  • [1]
  • [2]

您需要使用
js/document
而不是
document

document
是对clojurescript变量的引用,
js/document
是js世界中的一个文档。

我在您的代码中没有看到
document
变量。尝试
js/document
而不是
document
@edbond Woot!完全是这样。谢谢,请回答这个问题,这样我可以把它标记为正确的。
(defn -main [& args]
  (-> phantom
    (.create (fn [browser]
      (-> browser
        (.createPage (fn [page]
          (-> page                                                                                      
            (.open "http://google.com" (fn [status]
              (println (str "opened google? " status))
                (-> page
                  (.evaluate #(-> document .-title)
                    #(do
                      (println (str "Page title is " %))
                      (-> browser .exit))))))))))))))