Heroku错误地将我的Node应用程序检测为Ruby应用程序

时间:2012-04-04 09:14:31

标签: ruby node.js heroku

我有一个Node项目,它使用Bundler和Guard来处理我的预编译步骤。 这意味着我在项目的根目录中有一个Gemfile以及package.json文件。

我的问题是Heroku认为我的项目是一个Ruby应用程序,只是因为Gemfile存在。并抱怨我没有提交Gemfile.lock,我不想提交。

-----> Heroku receiving push
-----> Ruby app detected
 !
 !     Gemfile.lock is required. Please run "bundle install" locally
 !     and commit your Gemfile.lock.
 !
 !     Heroku push rejected, failed to compile Ruby app

有没有办法告诉Heroku应用程序是Node应用程序而不是Ruby应用程序?

2 个答案:

答案 0 :(得分:34)

在Heroku支持的帮助下,解决方案是:使用构建包!

通过在BUILDPACK_URL config var

中指定自定义buildpack来覆盖Heroku默认构建包
$ heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs

您还可以在创建应用期间指定buildpack

$ heroku create -s cedar --buildpack https://github.com/heroku/heroku-buildpack-nodejs

当你知道它时很简单。可以找到更多文档at Heroku Dev Center

答案 1 :(得分:3)

似乎有一种新方法可以实现这一点,因为BUILDPACK_URL现已弃用,here解释,但基本上命令是:

$ heroku buildpacks:set heroku/nodejs

您还可以在创建应用时指定buildpack:

$ heroku create myapp --buildpack heroku/nodejs