【问题标题】:Add NodeJS to a Clojure app in Heroku在 Heroku 中将 NodeJS 添加到 Clojure 应用程序
【发布时间】:2015-09-21 11:05:11
【问题描述】:

当我部署 Clojure 应用程序时,我需要节点程序 (NodeJS) 出现在 Heroku 的测功机中。我的应用不是 NodeJS 应用,例如它不能有 package.json,我不希望 Heroku 验证它是否是有效的 NodeJS 应用(不是,它是 Clojure 应用)。

实现这一点的方法是什么?

我尝试设置显式构建包:

$ heroku buildpacks
=== projectx Buildpack URLs
1. https://github.com/heroku/heroku-buildpack-nodejs
2. https://github.com/heroku/heroku-buildpack-clojure

但在部署时我仍然收到此错误消息:

remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Multipack app detected
remote: -----> Fetching custom git buildpack... done
remote:
remote:  !     Push rejected, failed to detect

在日志中我可以看到:

2015-09-21T10:56:07.731335+00:00 heroku[slug-compiler]: Slug compilation started
2015-09-21T10:56:07.731344+00:00 heroku[slug-compiler]: Slug compilation failed: no Cedar-supported app detected
2015-09-21T10:56:07.731346+00:00 heroku[slug-compiler]: HINT: This occurs when Heroku cannot detect the buildpack
2015-09-21T10:56:07.731347+00:00 heroku[slug-compiler]:       to use for this application automatically.
2015-09-21T10:56:07.731348+00:00 heroku[slug-compiler]: See https://devcenter.heroku.com/articles/buildpacks
2015-09-21T10:58:07.541720+00:00 heroku[slug-compiler]: Slug compilation started
2015-09-21T10:58:07.541729+00:00 heroku[slug-compiler]: Slug compilation failed: failed to detect
2015-09-21T11:00:28.651321+00:00 heroku[slug-compiler]: Slug compilation started
2015-09-21T11:00:28.651329+00:00 heroku[slug-compiler]: Slug compilation failed: failed to detect

【问题讨论】:

    标签: node.js heroku clojure


    【解决方案1】:

    尝试使用以下内容将package.json 文件添加到您的项目中:

    {}
    

    Node.js buildpack 必须检测到这个最小配置才能运行。

    确保package.json 文件也已提交给 Git。

    【讨论】:

    • 我真的不希望 Heroku 以任何方式运行 Node.js。我的 Clojure 应用程序将触发它。另外,使用 package.json 会帮助 Heroku 运行我的 Clojure 应用程序吗?
    • 使用空的package.json,节点步骤基本上是无操作的。 buildpack 将安装 Node.js 并设置环境,以便您可以在构建或运行时使用 node
    • 另外,这可能是您的构建失败的地方:github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/…
    • 你可能是对的,但是有一个空的 package.json 会生成一个 package.json,当你的 ClojureScript 应用程序使用 NodeJS 并且你使用 lein-npm 定义依赖项时会自动发生这种情况,失败由于“您的项目已经有一个 package.json 文件。请删除它。”。我需要在 Heroku 中使用 node 命令,而不需要 Heroku 尝试将我的项目验证为 NodeJS,因为我的项目是 not NodeJS.
    【解决方案2】:

    您可以对override the default build behaviorClojure buildpack 使用自定义构建文件,这样它也可以安装NodeJS。随意使用我的cljsnode 项目中的bin/build

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 2013-09-22
      • 2012-05-03
      • 2021-11-02
      • 1970-01-01
      • 2017-07-29
      • 2018-05-12
      相关资源
      最近更新 更多