gpt4 book ai didi

phantomjs - 如何编译代码 ClojureScript 以在 PhantomJS 中使用?

转载 作者:行者123 更新时间:2023-12-01 02:07:09 26 4
gpt4 key购买 nike

我正在尝试在 ClojureScript 中编写 PhantomJS 脚本。我的目标是 Node 并使用 phantomjs-node [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)))))))))))

现在,如果我使用 evaluate PhantomJS 网页对象的函数 [2],我出现以下错误:
phantom stdout: ReferenceError: Can't find variable: <namespace here>

当编译成 JavaScript 时,要评估的代码包含 CLJS 命名空间,因此无法在 PhantomJS 的网页对象的上下文中正确评估。下面是一个例子:
(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))))))))))))))

如何防止在 PhantomJS 的网页对象中评估的代码使用 CLJS 命名空间命名?或者其次我还有其他选择吗?
  • [1] https://github.com/sgentle/phantomjs-node
  • [2] http://phantomjs.org/api/webpage/method/evaluate.html
  • 最佳答案

    您需要使用 js/document而不是 document .document是对 clojurescript 变量的引用,js/document是js世界中的一个文档。

    关于phantomjs - 如何编译代码 ClojureScript 以在 PhantomJS 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31659130/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com