【问题标题】:ClojureScript - name goog is not defined in the externsClojureScript - 名称 goog 未在 externs 中定义
【发布时间】:2018-04-08 14:40:00
【问题描述】:

我一直在用这个 template 尝试 Electron 和 ClojureScript,我决定升级 Clojure 和 ClojureScript(从 CLJS 1.10.x 获得性能更新),但是,我收到了一些警告,而电子应用程序没有升级后不工作。

我收到以下错误:

WARNING: resources/public/js/ui-release-out/inferred_externs.js:19: WARNING - name goog is not defined in the externs.
goog.isArrayLike;
^^^^

Apr 08, 2018 5:14:05 PM com.google.javascript.jscomp.LoggerErrorManager printSummary
WARNING: 0 error(s), 1 warning(s)
Successfully compiled ["resources/public/js/ui-core.js"] in 12.076 seconds.
Compiling ClojureScript...
Compiling ["resources/main.js"] from ["electron_src"]...
Apr 08, 2018 5:14:17 PM com.google.javascript.jscomp.LoggerErrorManager println
WARNING: resources/public/js/electron-release/inferred_externs.js:5: WARNING - name goog is not defined in the externs.
goog.isArrayLike;
^^^^

Apr 08, 2018 5:14:17 PM com.google.javascript.jscomp.LoggerErrorManager printSummary
WARNING: 0 error(s), 1 warning(s)
Successfully compiled ["resources/main.js"] in 8.182 seconds.

如果我将 ClojureScript 依赖项降级为 1.9.542,一切正常。 1.9.946 也出现此错误。

不过,在开发版本中一切正常。

看来可能和这张票有关https://dev.clojure.org/jira/browse/CLJS-2392

你可以复制它克隆这个 repo https://github.com/Alexx-G/cljs-electron 并运行 lein do clean, cljsbuild once frontend-release, cljsbuild once electron-release

【问题讨论】:

    标签: clojure electron clojurescript google-closure-compiler


    【解决方案1】:

    我建议您首先升级所有库。我目前正在设置

      :dependencies [[org.clojure/clojure "1.9.0"]
                     [org.clojure/clojurescript "1.10.238"]
                     [org.clojure/core.async "0.4.474"]]
    
      :plugins [[lein-cljsbuild "1.1.7" :exclusions [[org.clojure/clojure]]]
                [lein-doo "0.1.10"]
                [lein-figwheel "0.5.15"]]
    

    关于我当前的项目。

    【讨论】:

    • P.S.当前项目(仍在进行中)可以在 git@github.com:cloojure/fred.git 看到
    • 我今天做错了,得到了与你类似的错误“goog not found”之类的。我一直在敲打直到它现在起作用。注意包含原生 JS 的两种方式,dino.js 使用 externs 和 wilma.js 使用 goog.provide('xxx')
    • 显然,该警告根本不会影响构建。在我启用pretty-printpseudo-names 后,我发现问题出在js/process 中,出于某种原因... 发布了答案。感谢您的反馈。
    【解决方案2】:

    显然,有两个问题: - 与goog 相关的警告(不影响构建本身) - 由于某些原因,js/process(js/require "process") 不同

    通过js/require提供外部文件和访问进程解决了警告和运行时问题。

    修复问题的版本和最新的clj和cljs库在这里https://github.com/Alexx-G/cljs-electron

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多