【问题标题】:Why isn't my clojure/cljs app deploying on Heroku?为什么我的 clojure/cljs 应用程序没有部署在 Heroku 上?
【发布时间】:2021-09-22 03:42:41
【问题描述】:

我正在尝试将我的应用部署到 heroku,但我不断收到此错误:

The required namespace "react" is not available, it was required by "reagent/core.cljs".

但我有

"react": "17.0.2-0",
    "react-dom": "17.0.2-0",
    "react-highlight.js": "1.0.7",

全部在我的 package.json 中,我也放了

 [cljsjs/react "17.0.2-0"]
 [cljsjs/react-dom "17.0.2-0"] 

在我的 project.clj 中。我也做了npm install react。我不确定我做错了什么?

使用 shadow-cljs 编译到我的本地主机可以很好地编译,但是当我尝试推送到 heroku 时它不会编译。知道我错过了什么吗?

编辑以添加更多细节:

我根据这篇博文制作了一个 bin/build 文件,尽管我没有使用 Fulcro:https://folcon.github.io/post/2020-04-12-Fulcro-on-Heroku/

我创建了一个 bin/build 文件,上面写着:

#!/usr/bin/env bash
npm install
npx shadow-cljs release main
clojure -A:depstar -m hf.depstar.uberjar fulcro.jar

我将此添加到我的shadow-cljs.edn 文件中:

;; v-- and this!
                       :release {:compiler-options {:optimizations :advanced}}}

它还说要在我的deps.edn 文件中添加一些内容,但我没有,所以我没有。

我还执行了 buildpack 步骤来添加 clojure 和 nodejs buildpack,尽管据我所知,我没有使用 nodejs。

【问题讨论】:

  • 您有更多关于 Heroku 设置的信息吗?问题可能只是在启动 shadow-cljs 之前缺少npm install。 shadow-cljs 不支持 CLJSJS 包,因此将它们添加到您的 project.clj 不会执行任何操作,您可以删除它们。
  • 我创建了 bin/build 文件并添加了 npm install ,但我仍然得到同样的错误。
  • 仍然没有足够的信息。基本上你需要验证在你的shadow-cljs.edn 的目录中还包含一个node_modules/react 目录。 shadow-cljs 应该告诉你它在哪里,验证该目录确实存在并且可以被shadow-cljs 读取。
  • 感谢托马斯的回复。我最终添加了一个 bin/build 文件,它完成了 npm install 和所有这些,并让它安装了所有东西。现在应用程序出现了,但它没有读取我的 config.edn 文件。我要发一个新帖子来看看这个问题是什么。

标签: heroku clojure clojurescript


【解决方案1】:

我有同样的问题,很容易解决。 你需要先指定 buildpacks nodejs,然后才 clojure。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 2018-09-23
  • 1970-01-01
  • 2022-08-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-06
相关资源
最近更新 更多