Clojurescript库 - goog.require找不到

时间:2013-02-25 01:35:38

标签: leiningen clojurescript cljsbuild

clojurescript的新手,并通过“现代CLJS”教程here

它指示通过将domina添加到project.clj来提取{{3}}。

:dependencies [[org.clojure/clojure "1.4.0"]
               [compojure "1.1.5"]
               [domina "1.0.0"]]

然后在ns表单

中引用它,在脚本中使用它
(ns cljstut.login
  (:use [domina :only [by-id value]]))

但是,当我在浏览器中实际运行它时,我在控制台日志中看到以下内容。

goog.require could not find: domina

好像我在某个地方遗漏了一些声明?但作为一个新手,整个构建过程相当不透明。任何疑难解答提示都非常感谢。

6 个答案:

答案 0 :(得分:3)

project.clj文件中的依赖关系和命名空间声明看起来很好。

如果使用lein cljsbuild auto构建clojurescript代码,则需要重新启动该过程。我相信它应该在重启后自动引入新的依赖关系。

如果这不起作用,或者您没有使用lein cljsbuild auto,请尝试手动在项目文件夹中运行lein deps命令 - 它将从远程存储库中获取所有缺少的依赖项。

答案 1 :(得分:3)

此外,请确保您已保存project.clj个文件并尝试运行lein cleanlein cljsbuild clean

答案 2 :(得分:1)

我正在将modern-cljs更新为使用过的libs和lein插件的最新版本。目前我将系列更新到系列的第7个教程。您现在应该安全地通过将domina 1.0.2-SNAPSHOT更新到project.cljs:dependencies并将lein-cljsbuild 0.3.0更新到project.cljs:plugins中。

米莫

答案 3 :(得分:1)

只想添加命名空间中的拼写错误会触发相同的错误消息:

  

goog.require找不到:domina

示例(注意modern-cljs中缺少“j”):

(ns modern-cls.login
  (:use [domina :only [by-id value]]))

我使用的是另一个项目名称,因此不同的命名空间只是为了勇敢。 当我从指南中复制粘贴时,它让我陷入困境,错误让我困惑了一段时间:)

答案 4 :(得分:0)

我在使用"现代CLJS"时遇到了同样的问题。教程。我的问题是无意中添加了" domina"依赖于project.clj的:plugins部分而不是:dependencies部分。

答案 5 :(得分:0)

我通过在index.html文件中按正确的顺序排列了这条错误消息。

正确的顺序:

<script src="js/expanding_gases.js" type="text/javascript"></script>
<script type="text/javascript">goog.require("expanding_gases.flow_gases");</script>

订单不正确:

<script type="text/javascript">goog.require("expanding_gases.flow_gases");</script>
<script src="js/expanding_gases.js" type="text/javascript"></script>

顺便说一下,为了理解“goog&#39;消息在这里: https://github.com/clojure/clojurescript/wiki/Quick-Start