Over a million developers have joined DZone.

HowTo: Run Node.js on Heroku

· Cloud Zone

Download the Essential Cloud Buyer’s Guide to learn important factors to consider before selecting a provider as well as buying criteria to help you make the best decision for your infrastructure needs, brought to you in partnership with Internap.

Server-side JavaScript, what server? says the naive cloud user. But why not take advantage of server-side JavaScript's power, even while running on the cloud?

It's not hard, in principle: there's a buildpack for that, or rather for running Node.js apps on Heroku in particular: and it's open-source, and theoretically pretty simple.

The documentation is a little spare, though. In particular, it assumes that you've already created a build server on Heroku and made it available to buildpack scripts.

If you haven't, or if you just want a little more hand-holding through the process, check out this longer tutorial from Pat Patterson.

Pat's description:

Here's a completely unofficial, unsupported recipe for running your own Node.js version on Heroku. These instructions are based on those at the Heroku Node.js Buildpack repository, with some extra steps that I found were necessary to make the process work. Note that buildpack support at Heroku is still evolving and the process will likely change over time.

Pat's recipe also includes helpful notes on which warning messages can be ignored.

Check out the buildpack and recipe if you're running on Heroku and want to unleash the server-side power of Node.js on your cloud apps.


The Cloud Zone is brought to you in partnership with Internap. Read Bare-Metal Cloud 101 to learn about bare-metal cloud and how it has emerged as a way to complement virtualized services.


Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}