Over a million developers have joined DZone.

HowTo: Run Node.js on Heroku

DZone's Guide to

HowTo: Run Node.js on Heroku

· Cloud Zone
Free Resource

MongoDB Atlas is a database as a service that makes it easy to deploy, manage, and scale MongoDB. So you can focus on innovation, not operations. Brought to you in partnership with MongoDB.

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.


MongoDB Atlas is the best way to run MongoDB on AWS — highly secure by default, highly available, and fully elastic. Get started free. Brought to you in partnership with MongoDB.


Opinions expressed by DZone contributors are their own.


Dev Resources & Solutions Straight to Your Inbox

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 }}