12

我有一个 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 应用程序?

4

2 回答 2

34

在 Heroku Support 的大力帮助下,解决方案是:使用构建包!

BUILDPACK_URL通过在配置变量中指定自定义构建包来覆盖 Heroku 默认构建包

$ heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs

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

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

当你知道它时很简单。更多文档可以在 Heroku 开发中心找到

于 2012-04-05T09:24:48.260 回答
3

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

$ heroku buildpacks:set heroku/nodejs

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

$ heroku create myapp --buildpack heroku/nodejs

于 2015-11-28T03:22:44.097 回答