ClojureScript中的goog.dom.query TypeError

ClojureScript中的goog.dom.query TypeError,clojurescript,google-closure-library,Clojurescript,Google Closure Library,我想用ClojureScript (:require [goog.dom.query :as q]) … (q/query ".foo.bar") 运行时在JS控制台中生成以下错误: Uncaught TypeError: Object function $o(a,b){if(!a)return[];if(a.constructor==Array)return a;if(!ia(a))return[a];if(ia(b)&&(b=ia(b)?document.getElem

我想用ClojureScript

(:require [goog.dom.query :as q])

…

(q/query ".foo.bar")
运行时在JS控制台中生成以下错误:

Uncaught TypeError: Object function $o(a,b){if(!a)return[];if(a.constructor==Array)return a;if(!ia(a))return[a];if(ia(b)&&(b=ia(b)?document.getElementById(b):b,!b))return[];var b=b||document,c=b.ownerDocument||b.documentElement;xo=b.contentType&&"application/xml"==b.contentType||dk&&(b.doctype||"[object XMLDocument]"==c.toString())||!!c&&(ek?c.xml:b.xmlVersion||c.xmlVersion);return(c=Wo(a)(b))&&c.Bb?c:Zo(c)} has no method 'Ja'

编辑:即使只是需要它,我也会得到错误。

事实上,在goog.dom中,默认情况下查询不可用。 以下是您如何使用它的方法:

(ns cljs-dom.core
  (:import [goog.dom query])
  (:require [goog.dom :as gdom]))
然后你可以这样使用它:

(.log js/console (aget (query ".myClass") 0))
gdom
包含在这里是为了方便。您可以编写
gdom/createElement
和所有其他标准调用。如果只需要
查询
,则不需要

在源代码中将此函数标记为已弃用,并建议改用:

(.querySelector js/document.foo.bar”)

@不推荐使用这是一个全软件查询选择器。使用
document.querySelector。见


在我用pretty print(不是从clojurescript而是使用goog.dom.query的JS代码)编译之后,代码中有一条注释
部分代码来自Dojo Toolkit,由
接收,您的代码中有这些注释吗?我怀疑第三方库没有包括在内,但我不明白为什么会生成代码,编译过程中也没有抛出错误。这是库不在goog目录中,您可以在第三方中找到goog.dom.query…dojo和deps.js应该有一个对它的引用。但不确定如果该引用丢失,它将如何编译。在闭包库中应该有一个文件:
third\u party\closure\goog\dojo\dom\query\u test.html
您可以打开该文件,看看单元测试是否通过了goog.dom.query。我在JS文件@HMR中有这些注释。