【发布时间】: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