Heroku Application Error when running CI build & Release Pipelines

Summary

If you are trying to deploy an app to Heroku and your deployment fails – use the following steps to diagnose and solve the issue.

Work from the correct directory

Ensure that you are in the correct directory when you are deploying your app. For instance, if you have the following structure:

Vue-app
— Client-app
— Server-app

If you want to deploy Server-app, the cd into this directory and issue all the commands from here.

Delete .git folder

Delete the .git and start again. The deployment step will sometimes fail because there are conflicts in your versioning. The easiest thing to do is to backup your .git folder and then delete it with the following command:

rm -rf .git

Check the Heroku logs

Check you Heroku application logs by issuing the following command:

heroku logs

This should reveal a log similar to the following:

2021-02-26T13:10:08.527421+00:00 app[web.1]: [nodemon] 2.0.3
 2021-02-26T13:10:08.528336+00:00 app[web.1]: [nodemon] to restart at any time, enter rs
 2021-02-26T13:10:08.528885+00:00 app[web.1]: [nodemon] watching path(s): .
 2021-02-26T13:10:08.528988+00:00 app[web.1]: [nodemon] watching extensions: js,mjs,json
 2021-02-26T13:10:08.529490+00:00 app[web.1]: [nodemon] starting node server.js
 2021-02-26T13:10:09.098481+00:00 app[web.1]: internal/modules/cjs/loader.js:883
 2021-02-26T13:10:09.098516+00:00 app[web.1]: throw err;
 2021-02-26T13:10:09.098516+00:00 app[web.1]: ^
 2021-02-26T13:10:09.098517+00:00 app[web.1]: 
 2021-02-26T13:10:09.098517+00:00 app[web.1]: Error: Cannot find module '../server/routes/student.route'
 2021-02-26T13:10:09.098518+00:00 app[web.1]: Require stack:
 2021-02-26T13:10:09.098518+00:00 app[web.1]: - /app/server.js
 2021-02-26T13:10:09.098519+00:00 app[web.1]: at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
 2021-02-26T13:10:09.098519+00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:725:27)
 2021-02-26T13:10:09.098520+00:00 app[web.1]: at Module.require (internal/modules/cjs/loader.js:952:19)
 2021-02-26T13:10:09.098520+00:00 app[web.1]: at require (internal/modules/cjs/helpers.js:88:18)
 2021-02-26T13:10:09.098520+00:00 app[web.1]: at Object. (/app/server.js:20:20)
 2021-02-26T13:10:09.098521+00:00 app[web.1]: at Module._compile (internal/modules/cjs/loader.js:1063:30)
 2021-02-26T13:10:09.098521+00:00 app[web.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
 2021-02-26T13:10:09.098521+00:00 app[web.1]: at Module.load (internal/modules/cjs/loader.js:928:32)
 2021-02-26T13:10:09.098525+00:00 app[web.1]: at Function.Module._load (internal/modules/cjs/loader.js:769:14)
 2021-02-26T13:10:09.098525+00:00 app[web.1]: at Function.executeUserEntryPoint as runMain
 2021-02-26T13:10:09.098526+00:00 app[web.1]: at internal/main/run_main_module.js:17:47 {
 2021-02-26T13:10:09.098526+00:00 app[web.1]: code: 'MODULE_NOT_FOUND',
 2021-02-26T13:10:09.098526+00:00 app[web.1]: requireStack: [ '/app/server.js' ]
 2021-02-26T13:10:09.098527+00:00 app[web.1]: }
 2021-02-26T13:10:09.104386+00:00 app[web.1]: [nodemon] app crashed - waiting for file changes before starting…
 2021-02-26T13:11:05.829439+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

Package.json

Ensure that your package.json has the correct Start scripts.

  "name": "Server-app",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "start": "nodemon"
  },

Heroku will fail with the deployment if the correct start script has not been selected.