如何在不需要Figwheel的情况下部署试剂应用程序?

问题描述 投票:0回答:2

我在Reagent中编写了一个Web应用程序,我使用Figwheel在本地开发和运行它,这很棒。现在我想部署它,所以我跑了“lein ring uberwar”。它说“编译ClojureScript ......”(3次!),听起来很有希望。但是当我部署war文件并访问该页面时,我得到一个闪光:

ClojureScript has not been compiled!
please run lein figwheel in order to start the compiler

在申请开始之前。

Figwheel甚至应该参与生产部署吗?我可以建立一个没有这种类似FOUC闪光灯的超级战争吗?

我找到了How do I deploy a single-page app. written in ClojureScript / Figwheel to a static server?但它似乎从头开始(不是Reagent特定的),很多链接已经死了。

我不熟悉figwheel / uberwar如何工作,所以我甚至不知道该尝试什么。

即使使用普通的0.8.1试剂项目AFAICT,也会发生这种情况。

当我第一次访问该页面时,我非常简短地看到了一个Figwheel警告文本。在页面加载之前,我一点都不看。 (或者也许让我放入一个自定义的微调器或其他东西,但一次只有一件事。)我也不想打包并向每个客户端发送不必要的Figwheel代码,因为它不大但是永远不需要它那里。

deployment clojure clojurescript reagent figwheel
2个回答
0
投票

我想你正在寻找lein uberjar

~/expr/cljs-enflame > lein uberjar
Created /home/alan/expr/cljs-enflame/target/cljs-enflame-0.1.0-SNAPSHOT.jar
Created /home/alan/expr/cljs-enflame/target/cljs-enflame-0.1.0-SNAPSHOT-standalone.jar

然后,您可以部署独立版本,并使用以下命令启动程序:

> java -jar target/cljs-enflame-0.1.0-SNAPSHOT-standalone.jar

project.clj中指定主程序入口点的位置如下:

:main  demo.hello

0
投票

我认为您的包装过程需要两个步骤:

  • 第一步:使用生产配置文件编译ClojureScript代码。你可能有像lein cljsbuild prod once或类似目标那样的东西。我们的想法是,您希望生产配置文件生成单个优化的JavaScript文件,该文件将由Tomcat作为静态资源提供。
  • 第二步:使用lein ring uberwar为Tomcat构建WAR文件。

根据您从Web应用程序提供静态文件的方式,静态资源的路径可能会发生变化,但除非您添加任何其他配置,否则您将按照以下答案中的说明提供静态资源:https://stackoverflow.com/a/7820392/483566

© www.soinside.com 2019 - 2024. All rights reserved.