我正在尝试使用重新框架和电子的组合来设置项目,我想安装re-frame-10x以便我可以轻松地观看app-db的某些部分。之前我曾经使用它通过谷歌浏览器访问的常规clojurescript /重新框架项目,但还没有使用电子。我很有希望,因为我相信电子使用与引擎盖下的铬基本相同的代码。
我按照re-frame-10x github页面上的设置说明进行操作,一切似乎都没问题。但是我无法调出10x窗口。
这是我的project.clj文件的一部分,特别是clojurescript dev build:
: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启动。
仍然没有重帧-10x窗口的迹象。它应该出现在我在应用程序窗口中按下ctrl-h时。
滚动浏览clojure repl消息我发现它在cljs repl启动期间遇到了重新帧-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请求修改,特别是关闭定义,预加载和相关cljsbuild部分的编译器部分中main的链接:
: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构建版本,dev-front和dev-main。我在错误的部分有clojurescript编译器选项。将它们移动到正确的部分可以消除错误,但是当我按下ctrl-h时,仍然不会出现重帧-10x窗口。
答案 0 :(得分:1)
解决这个问题的关键是将其置于正确的构建中。 Descjop有两个开发版本,一个用于app本身(dev-main),另一个用于窗口(dev-front)。 Dev-main可以而且可能应该保持孤立。这些更改需要在dev-front构建中进行。
将dev-front构建转换为:optimizations 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>
升级!默认情况下,Descjop使用较旧版本的clojurescript,它不提供重新使用帧10x的一些功能。 org.clojure / clojurescript&#34; 1.10.64&#34;适合我。
之后可以跟随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的来源
感谢Mike Callahan对此解决方案的要点。