【问题标题】:Changing app from one language to another in heroku在heroku中将应用程序从一种语言更改为另一种语言
【发布时间】:2011-12-05 04:51:22
【问题描述】:

是否可以将 Cedar 堆栈上的 Heroku 应用从一种语言切换到另一种语言?

在这个特定的实例中,我正在尝试将应用程序从 PHP 迁移到 NodeJS,在执行 git push 后,它被检测为 NodeJS 应用程序:

-----> Heroku receiving push
-----> Node.js app detected
-----> Fetching Node.js binaries
-----> Vendoring node 0.4.7
-----> Installing dependencies with npm 1.0.94

       Dependencies installed
-----> Discovering process types
       Procfile declares types -> web
-----> Compiled slug size is 5.0MB
-----> Launching... done, v7

...但是它随后崩溃:

Error: No such file or directory - node main.js

尝试运行 Node REPL 也表明二进制文件不存在:

> heroku run node
Running node attached to terminal... up, run.1
sh: node: not found

有没有什么方法可以在不创建新实例的情况下重新初始化 Cedar 堆栈应用程序?

【问题讨论】:

  • 你为什么不完全创建一个新的应用程序并推动它?
  • @JohnBeynon - 主要原因是为了防止必须更新 DNS 记录和/或连接到现有实例的客户端。如果推荐的方法是简单地创建一个新实例并终止旧实例,则在部署期间检测到不同的应用程序类型时通知用户可能会有所帮助。
  • 您实际上不必更改任何 DNS 记录 - 只需将自定义域从一个应用程序实例移动到 Heroku 上的另一个。如果您将底层语言从 PHP 更改为 Node,那么在让用户放松之前拥有一个可以测试的新应用似乎是明智之举?
  • 我们正在我们的暂存实例上对此进行测试,这就是我们发现问题的方式。无论如何,看起来创建一个新的实例可能更容易。谢谢。

标签: node.js heroku cedar


【解决方案1】:

创建一个新的实例应用程序实例。尝试将一个变成另一个可能不是一个好主意。 DNS 会自动为您更新,因为它由路由网格处理,您会因此而感到更快乐和更好。

我(虽然用例略有不同)将应用程序从 Bamboo 迁移到 Cedar,整个过程不到五分钟。唯一的停机时间是我在应用程序上重新定位自定义域设置时的几秒钟。

【讨论】:

    【解决方案2】:

    我知道这是一个老问题,但我在将我的应用程序从 PHP 更改为 NodeJs 时遇到了这个问题。我第一次运行 git push heroku master 时收到错误消息,说它不能使用 PHP buildpack。

    所以我进入了 Heroku 仪表板 中的应用Settings 选项卡,并从Buildpacks 列表 中删除了PHP buildpack。 最后,当我运行git push heroku master 时,Heroku 自动检测到了 NodeJS buildpack。

    【讨论】:

    • 你是救生员!我就是这样做的,我的应用程序工作了! :)
    • 我相信这个问题的答案比接受的答案更合适。 “删除 buildpack”,推送新版本,它会自动检测新的 buildpack 是一个优雅的解决方案,不需要重新创建实例。
    猜你喜欢
    • 2018-02-15
    • 2014-11-04
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    相关资源
    最近更新 更多