Cloud Zone is brought to you in partnership with:

I'm a software developer. I'm passionate, I like what I'm doing and I try to do it better every day. I like open technologies because that's where I'm coming from. Currently working as a freelancer on J2EE applications. Particularly interested in Scala, Liftweb and Functional Programming. Andrew has posted 14 posts at DZone. You can read more from them at their website. View Full User Profile

A Meteor Node.js App to Heroku in 5 Minutes

  • submit to reddit

Meteor is an amazing framework to rapidly build fully interactive web applications based on node.js and MongoDB.

I had a look at the video on the home page and I was quite impressed. I wanted to check it out myself on the web so I installed the framework

curl | /bin/sh

and then went ahead with creating a new app.

If you create a new app you probably won't have a feeling of where to start. So instead of starting from scratch, try starting from one of the examples

meteor create --example parties

Now that you have the code just browse through the client and the server folders, you can get a feeling of how to structure a web app.

Ok now, let's chuck it on Heroku

cd parties
heroku create devparties --stack cedar --buildpack

The command above will create a new heroku app called devparties using this buildpack that has all the configuration to use a MongoHQ free db.

Now let's use git to add to Heroku

git init
git commit -a -m "Initial commit"

Before pushing you will have to add the remote (heroku) git url

git remote add heroku
git push heroku master

OK, that's it. You have your app running.

There is one last thing you command you'll have to run to set the ROOT_URL ( not sure, must be in the buildpack somewhere.. ) Anyway, if you get an error like

Starting process with command `PATH=.meteor/local/usr/bin:.meteor/local/usr/lib/meteor/bin:bin:/usr/local/bin:/usr/bin:/bin NODE_PATH=.meteor/local/usr/lib/meteor/lib/node_modules MONGO_URL=mongodb:// node .meteor/local/build/main.js`
2013-01-31T00:03:57+00:00 app[web.1]:             ^
2013-01-31T00:03:57+00:00 app[web.1]: app/packages/meteor/url_common.js:14
2013-01-31T00:03:57+00:00 app[web.1]: 
2013-01-31T00:03:57+00:00 app[web.1]:     at Object.Meteor.absoluteUrl (app/packages/meteor/url_common.js:14:13)
2013-01-31T00:03:57+00:00 app[web.1]:     at app/packages/accounts-password/email_templates.js:3:20
2013-01-31T00:03:57+00:00 app[web.1]:       throw new Error("Must pass options.rootUrl or set ROOT_URL in the server
2013-01-31T00:03:57+00:00 app[web.1]: Error: Must pass options.rootUrl or set ROOT_URL in the server environment
2013-01-31T00:03:57+00:00 app[web.1]:     at Array.forEach (native)
2013-01-31T00:03:57+00:00 app[web.1]:     at Function._.each._.forEach (/app/.meteor/local/build/server/node_modules/underscore/underscore.js:79:11)
2013-01-31T00:03:57+00:00 app[web.1]:     at run (/app/.meteor/local/build/server/server.js:99:7)
2013-01-31T00:03:57+00:00 app[web.1]:     at /app/.meteor/local/build/server/server.js:113:21
2013-01-31T00:03:58+00:00 heroku[web.1]: Process exited with status 1

then run the command

heroku config:add ROOT_URL=


Published at DZone with permission of its author, Andrew Salvadore. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)