Not able to deploy NodeJS App in Heroku

881 views Asked by At

I created a NodeJS app using JetBrain Webstrom and now i would like to deploy it to heroku.

This image contains my app directory

Should I remove node_modules to deploy the app ? or should i add any "engine" section under package.json ? What should I do to get my app deployed properly in heroku.

My app's package.json:

{
  "name": "form",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.15.2",
    "cookie-parser": "~1.4.3",
    "debug": "~2.2.0",
    "ejs": "~2.5.2",
    "express": "~4.14.0",
    "morgan": "~1.7.0",
    "serve-favicon": "~2.3.0"
  }
}

Log while Pushing the App:

C:\Users\Adhik\formgp>git push heroku master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 585 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 3 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote:  !     No default language could be detected for this app.
remote:                         HINT: This occurs when Heroku cannot detect the buildpack to use for this application automatically.
remote:                         See https://devcenter.heroku.com/articles/buildpacks
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !       Push rejected to serene-bayou-91098.
remote:
To https://git.heroku.com/serene-bayou-91098.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/serene-bayou-91098.git'
2

There are 2 answers

0
Andrés Andrade On

It seems like engines are missing in your package.json:

"engines": {
    "node": "6.7.0",
    "npm": "3.10.3"
  }

Also deploying a Procfile can be helpful:

web: node ./bin/www

Are you sure you are deploying the entire folder? Check your logs:

Counting objects: 3, done.
1
Shane On

Try adding this to your package.json:

  "engines": {
    "node": "whatever_version_you_want"
  }

You shouldn't need to install/remove node_modules, Heroku should do that for you.