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

and*_*myr 12 ruby heroku node.js

我有一个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
Run Code Online (Sandbox Code Playgroud)

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

and*_*myr 34

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

通过在BUILDPACK_URLconfig var中指定自定义buildpack来覆盖Heroku默认构建包

$ heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs
Run Code Online (Sandbox Code Playgroud)

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

$ heroku create -s cedar --buildpack https://github.com/heroku/heroku-buildpack-nodejs
Run Code Online (Sandbox Code Playgroud)

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


Lou*_*ge9 4

似乎有一种新方法可以做到这一点,但BUILDPACK_URL现在已弃用,解释如下,但本质上该命令是:

$ heroku buildpacks:set heroku/nodejs

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

$ heroku create myapp --buildpack heroku/nodejs