Konstantin K
Konstantin K

Reputation: 1317

Heroku NODE_ENV environment variable

I'm running a Node project with Heroku as my main deploy target. In dev environment I'm using grunt to start the web server, however in production I prefer to launch the app directly with node app

Here's my Procfile:

web: bin/web

And bin/web:

#!/bin/sh                                                                       
echo "NODE_ENV=" $NODE_ENV
if [ "$NODE_ENV" == "production" ]; then
    echo "Starting the server with node app"
    node app
else
    echo "Starting the server using grunt"
    grunt
fi

The first echo is for debugging. heroku log is showing:

app[web.1]: NODE_ENV=

Basically, meaning NODE_ENV is not set. (and the app starts with grunt instead of node app)

The docs say that "The NODE_ENV environment variable defaults to production, but you can override it if you wish"

What am I missing?

Upvotes: 19

Views: 16268

Answers (1)

Chris Harrington
Chris Harrington

Reputation: 1662

Not sure if you figured this out or not, but I had the same problem and fixed it using:

heroku config:set NODE_ENV=production

Via https://devcenter.heroku.com/articles/nodejs-support.

Good luck!

Upvotes: 43

Related Questions