尝试将 re-frame-10x(是 re-frame-trace)与 descjop(电子)项目一起使用
Trying to use re-frame-10x (was re-frame-trace) with descjop (electron) project
我正在尝试结合使用 re-frame 和 electron 来建立一个项目,我想安装 re-frame-10x,这样我就可以轻松地查看 app-db 的某些部分。我之前在通过 google chrome 访问的常规 clojurescript/re-frame 项目中使用过它,但尚未使用电子。我很有希望,因为我相信电子在幕后使用与 chrome 基本相同的代码。
我按照 re-frame-10x github 页面上的设置说明进行操作,似乎一切正常。但是我无法调出 10x window。
这是我的 project.clj 文件的一部分,特别是 clojurescript 开发构建:
:cljsbuild
{:builds
{:dev-main {:source-paths ["src"]
:incremental true
:jar true
:assert true
:compiler {:output-to "app/dev/js/cljsbuild-main.js"
:externs ["app/dev/js/externs.js"
"node_modules/closurecompiler-externs/path.js"
"node_modules/closurecompiler-externs/process.js"]
:warnings true
:elide-asserts true
:target :nodejs
:output-dir "app/dev/js/out_main"
:optimizations :simple
:pretty-print true
:output-wrapper true
:closure-defines {"re_frame.trace.trace_enabled_QMARK_" true}
:preloads [day8.re-frame-10x.preload]
:main "anh.core" }}
:dev-front {:source-paths ["src_front" "src_front_profile/anh_front/dev"]
:incremental true
:jar true
:assert true
:compiler {:output-to "app/dev/js/front.js"
:externs ["app/dev/js/externs_front.js"]
:warnings true
:elide-asserts true
:optimizations :none
:output-dir "app/dev/js/out_front"
:pretty-print true
:output-wrapper true }}
请注意,有 2 个版本。 (figwheel-status) 告诉我它正在观察和重新编译 dev-front。 dev-main 包含 re-frame-10x 需要的指向 main 的指针。
Clojurescript 已升级到最新版本“1.10.64”,一切正常,在 repl 启动时(使用来自 emacs 的插件)或 clojurescript repl 启动时没有错误消息。
仍然没有 re-frame-10x 的迹象window。当我在应用程序 window.
中按 ctrl-h 时应该会出现
这一行下面是我在路上尝试的东西。可能无关紧要。
回头浏览 clojure repl 消息,我看到它在 cljs repl 启动期间遇到了 re-frame-10x 的某种问题:
user> Figwheel: Starting server at http://0.0.0.0:3441
Figwheel: Watching build - dev-front
Figwheel: Cleaning build - dev-front
Compiling "app/dev/js/front.js" from ["src_front" "src_front_profile/anh_front/dev"]...
Failed to compile "app/dev/js/front.js" in 10.853 seconds.
---- Could not Analyze app/dev/js/out_front/day8/re_frame_10x/subs.cljs ----
No such namespace: cljs.spec.alpha, could not locate cljs/spec/alpha.cljs, cljs/spec/alpha.cljc, or Closure namespace "cljs.spec.alpha"
---- Analysis Error : Please see app/dev/js/out_front/day8/re_frame_10x/subs.cljs ----
Launching ClojureScript REPL for build: dev-front
知道这是什么意思吗?我还没有使用 cljs.spec,但似乎编译器正在寻找它。
这是 project.clj 文件的一部分,其中包含 re-frame-10x 要求的修改,特别是编译器部分中的闭包定义、预加载和 link 到 main相关的 cljsbuild 部分:
:dev-front {:source-paths ["src_front" "src_front_profile/anh_front/dev"]
:incremental true
:jar true
:assert true
:compiler {:output-to "app/dev/js/front.js"
:externs ["app/dev/js/externs_front.js"]
:warnings true
:elide-asserts true
:optimizations :none
:output-dir "app/dev/js/out_front"
:pretty-print true
:output-wrapper true
:closure-defines {"re_frame.trace.trace_enabled_QMARK_" true}
:preloads [day8.re-frame-10x.preload]
:main "anh.core"
}}
更新:
这有帮助:
No such namespace: clojure.spec.alpha in clojurescript project setup
按照建议,我将 clojurescript 升级到最新版本,该版本具有所需的规范内容,并且在启动 cljs repl 时 repl 显示不同的错误:
Failed to load resource: net::ERR_FILE_NOT_FOUND
cljs_deps.js Failed to load resource: net::ERR_FILE_NOT_FOUND
base.js:677 goog.require could not find: day8.re_frame_10x.preload
goog.logToConsole_ @ base.js:677
base.js:711 Uncaught Error: goog.require could not find: day8.re_frame_10x.preload
at Object.goog.require (base.js:711)
at index.html:11
base.js:677 goog.require could not find: anh.core
goog.logToConsole_ @ base.js:677
base.js:711 Uncaught Error: goog.require could not find: anh.core
at Object.goog.require (base.js:711)
at index.html:11
base.js:677 goog.require could not find: anh_front.init
goog.logToConsole_ @ base.js:677
base.js:711 Uncaught Error: goog.require could not find: anh_front.init
at Object.goog.require (base.js:711)
at index.html:12
这只是没有找到主要功能。 project.clj 文件指定了 2 个开发版本,dev-front 和 dev-main。我在错误的部分有 clojurescript 编译器选项。将它们移动到正确的部分可以消除错误,但是当我按 ctrl-h 时,re-frame-10x window 仍然不会出现。
解决此问题的关键是将其放入正确的版本中。 Descjop 有 2 个开发版本,一个用于应用程序本身 (dev-main),一个用于 window (dev-front)。 Dev-main 可以,而且可能应该,一个人呆着。更改需要进入 dev-front 构建。
第 1 步
将 dev-front 构建转换为:优化 none。这是 re-frame-10x 的要求之一。为此,需要将以下内容添加到 profile.clj 的 cljsbuild 部分,位于 :dev-front :compiler 部分:
:main "setup-front.init"
:asset-path "js/out_front"
然后可以简化 html 文件,因为 "setup-front.init" 将为您加载必要的内容。像这样:
<body>
<div id="app">
<p>Minimum app does not work.</p>
</div>
<script type="text/javascript" src="js/front.js" charset="utf-8"></script>
</body>
第 2 步
升级!默认情况下,Descjop 使用旧版本的 clojurescript,它不提供 re-frame-10x 使用的某些功能。 org.clojure/clojurescript“1.10.64”适合我。
之后,可以跟进 re-frame-10x instructions,它应该就可以正常工作了。简而言之,将以下内容添加到 :main 语句
旁边的 cljsbuild 部分
:closure-defines {"re_frame.trace.trace_enabled_QMARK_" true}
:preloads [day8.re-frame-10x.preload]
并将其添加到依赖项中。可能最好进入 :profiles :dev 部分。不过,请查看说明或 clojars 以获取最新版本:
[day8.re-frame/re-frame-10x "0.2.1-SNAPSHOT"]
使用这些更改的非常基本的 hello-world 源代码可在 github
上找到
感谢 Mike Callahan 提供此解决方案的要点。
我正在尝试结合使用 re-frame 和 electron 来建立一个项目,我想安装 re-frame-10x,这样我就可以轻松地查看 app-db 的某些部分。我之前在通过 google chrome 访问的常规 clojurescript/re-frame 项目中使用过它,但尚未使用电子。我很有希望,因为我相信电子在幕后使用与 chrome 基本相同的代码。
我按照 re-frame-10x github 页面上的设置说明进行操作,似乎一切正常。但是我无法调出 10x window。
这是我的 project.clj 文件的一部分,特别是 clojurescript 开发构建:
:cljsbuild
{:builds
{:dev-main {:source-paths ["src"]
:incremental true
:jar true
:assert true
:compiler {:output-to "app/dev/js/cljsbuild-main.js"
:externs ["app/dev/js/externs.js"
"node_modules/closurecompiler-externs/path.js"
"node_modules/closurecompiler-externs/process.js"]
:warnings true
:elide-asserts true
:target :nodejs
:output-dir "app/dev/js/out_main"
:optimizations :simple
:pretty-print true
:output-wrapper true
:closure-defines {"re_frame.trace.trace_enabled_QMARK_" true}
:preloads [day8.re-frame-10x.preload]
:main "anh.core" }}
:dev-front {:source-paths ["src_front" "src_front_profile/anh_front/dev"]
:incremental true
:jar true
:assert true
:compiler {:output-to "app/dev/js/front.js"
:externs ["app/dev/js/externs_front.js"]
:warnings true
:elide-asserts true
:optimizations :none
:output-dir "app/dev/js/out_front"
:pretty-print true
:output-wrapper true }}
请注意,有 2 个版本。 (figwheel-status) 告诉我它正在观察和重新编译 dev-front。 dev-main 包含 re-frame-10x 需要的指向 main 的指针。
Clojurescript 已升级到最新版本“1.10.64”,一切正常,在 repl 启动时(使用来自 emacs 的插件)或 clojurescript repl 启动时没有错误消息。
仍然没有 re-frame-10x 的迹象window。当我在应用程序 window.
中按 ctrl-h 时应该会出现这一行下面是我在路上尝试的东西。可能无关紧要。
回头浏览 clojure repl 消息,我看到它在 cljs repl 启动期间遇到了 re-frame-10x 的某种问题:
user> Figwheel: Starting server at http://0.0.0.0:3441
Figwheel: Watching build - dev-front
Figwheel: Cleaning build - dev-front
Compiling "app/dev/js/front.js" from ["src_front" "src_front_profile/anh_front/dev"]...
Failed to compile "app/dev/js/front.js" in 10.853 seconds.
---- Could not Analyze app/dev/js/out_front/day8/re_frame_10x/subs.cljs ----
No such namespace: cljs.spec.alpha, could not locate cljs/spec/alpha.cljs, cljs/spec/alpha.cljc, or Closure namespace "cljs.spec.alpha"
---- Analysis Error : Please see app/dev/js/out_front/day8/re_frame_10x/subs.cljs ----
Launching ClojureScript REPL for build: dev-front
知道这是什么意思吗?我还没有使用 cljs.spec,但似乎编译器正在寻找它。
这是 project.clj 文件的一部分,其中包含 re-frame-10x 要求的修改,特别是编译器部分中的闭包定义、预加载和 link 到 main相关的 cljsbuild 部分:
:dev-front {:source-paths ["src_front" "src_front_profile/anh_front/dev"]
:incremental true
:jar true
:assert true
:compiler {:output-to "app/dev/js/front.js"
:externs ["app/dev/js/externs_front.js"]
:warnings true
:elide-asserts true
:optimizations :none
:output-dir "app/dev/js/out_front"
:pretty-print true
:output-wrapper true
:closure-defines {"re_frame.trace.trace_enabled_QMARK_" true}
:preloads [day8.re-frame-10x.preload]
:main "anh.core"
}}
更新:
这有帮助: No such namespace: clojure.spec.alpha in clojurescript project setup 按照建议,我将 clojurescript 升级到最新版本,该版本具有所需的规范内容,并且在启动 cljs repl 时 repl 显示不同的错误:
Failed to load resource: net::ERR_FILE_NOT_FOUND
cljs_deps.js Failed to load resource: net::ERR_FILE_NOT_FOUND
base.js:677 goog.require could not find: day8.re_frame_10x.preload
goog.logToConsole_ @ base.js:677
base.js:711 Uncaught Error: goog.require could not find: day8.re_frame_10x.preload
at Object.goog.require (base.js:711)
at index.html:11
base.js:677 goog.require could not find: anh.core
goog.logToConsole_ @ base.js:677
base.js:711 Uncaught Error: goog.require could not find: anh.core
at Object.goog.require (base.js:711)
at index.html:11
base.js:677 goog.require could not find: anh_front.init
goog.logToConsole_ @ base.js:677
base.js:711 Uncaught Error: goog.require could not find: anh_front.init
at Object.goog.require (base.js:711)
at index.html:12
这只是没有找到主要功能。 project.clj 文件指定了 2 个开发版本,dev-front 和 dev-main。我在错误的部分有 clojurescript 编译器选项。将它们移动到正确的部分可以消除错误,但是当我按 ctrl-h 时,re-frame-10x window 仍然不会出现。
解决此问题的关键是将其放入正确的版本中。 Descjop 有 2 个开发版本,一个用于应用程序本身 (dev-main),一个用于 window (dev-front)。 Dev-main 可以,而且可能应该,一个人呆着。更改需要进入 dev-front 构建。
第 1 步
将 dev-front 构建转换为:优化 none。这是 re-frame-10x 的要求之一。为此,需要将以下内容添加到 profile.clj 的 cljsbuild 部分,位于 :dev-front :compiler 部分:
:main "setup-front.init"
:asset-path "js/out_front"
然后可以简化 html 文件,因为 "setup-front.init" 将为您加载必要的内容。像这样:
<body>
<div id="app">
<p>Minimum app does not work.</p>
</div>
<script type="text/javascript" src="js/front.js" charset="utf-8"></script>
</body>
第 2 步
升级!默认情况下,Descjop 使用旧版本的 clojurescript,它不提供 re-frame-10x 使用的某些功能。 org.clojure/clojurescript“1.10.64”适合我。
之后,可以跟进 re-frame-10x instructions,它应该就可以正常工作了。简而言之,将以下内容添加到 :main 语句
旁边的 cljsbuild 部分:closure-defines {"re_frame.trace.trace_enabled_QMARK_" true}
:preloads [day8.re-frame-10x.preload]
并将其添加到依赖项中。可能最好进入 :profiles :dev 部分。不过,请查看说明或 clojars 以获取最新版本:
[day8.re-frame/re-frame-10x "0.2.1-SNAPSHOT"]
使用这些更改的非常基本的 hello-world 源代码可在 github
上找到感谢 Mike Callahan 提供此解决方案的要点。