我有一个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应用程序?
答案 0 :(得分:34)
在Heroku支持的帮助下,解决方案是:使用构建包!
通过在BUILDPACK_URL
config var
$ 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