{"id":325,"date":"2021-06-25T18:03:32","date_gmt":"2021-06-25T18:03:32","guid":{"rendered":"https:\/\/takeondevops.com\/?p=325"},"modified":"2021-06-25T18:12:37","modified_gmt":"2021-06-25T18:12:37","slug":"deploying-and-hosting-node-js-applications-on-heroku","status":"publish","type":"post","link":"https:\/\/takeondevops.com\/?p=325","title":{"rendered":"Deploying and hosting node.js applications on Heroku"},"content":{"rendered":"\n<p>This blog has been long overdue. I wrote this basic Covid19 dashboard application over a year ago (Application is still live on heroku at: <a href=\"https:\/\/covid19-dash-sl.herokuapp.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/covid19-dash-sl.herokuapp.com<\/a>). Too bad I couldn&#8217;t write a blog on it. Anyways, I didn&#8217;t think it would be useful cause I was under the impression that Covid19 will be over before we know it. But, it has been over a year now and here we are &#x1f61e;<\/p>\n\n\n\n<p>So about the application, I wrote it in Javascript (used node.js for the backend and react.js for developing the frontend). You can find the code to the application in <strong><a href=\"https:\/\/github.com\/ihsanizwer\/covid19-dash-sl.git\">here<\/a><\/strong>. During the initial period of the pandemic in Sri Lanka, the health promotion bureau of Sri Lanka exposed an API. By calling this API, we can get statistics on the Covid19 situation in Sri Lanka and the world. You can find the detailed API information <a href=\"https:\/\/www.hpb.health.gov.lk\/en\/api-documentation\"><strong>here<\/strong><\/a>. Apparently, what I did here was recursively query this API and display them in the dashboard. In this blog, we will look at how we can run this locally, deploy it on Heroku and some of the benefits of the Heroku.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Running it locally.<\/h2>\n\n\n\n<p> Firstly, lets have a look on how we can run this simple application locally. Ensure that you have fulfilled the below prerequisites before we begin. Click on the &#8220;Expand section, &#8216;Running it locally'&#8221; link below to view you can run this locally. <div id=\"pressrelease-link-325\" class=\"sh-link pressrelease-link sh-hide\"><a href=\"#\" onclick=\"showhide_toggle('pressrelease', 325, '&#x2195;&#xfe0f; Expand section, \\'Running it locally\\' &#x2195;&#xfe0f;', '&#x2195;&#xfe0f; Collapse section, \\'Running it locally\\' &#x2195;&#xfe0f;'); return false;\" aria-expanded=\"false\"><span id=\"pressrelease-toggle-325\">&#x2195;&#xfe0f; Expand section, 'Running it locally' &#x2195;&#xfe0f;<\/span><\/a><\/div><div id=\"pressrelease-content-325\" class=\"sh-content pressrelease-content sh-hide\" style=\"display: none;\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisites.<\/h3>\n\n\n\n<p>You need to have the following installed.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/nodejs.org\/en\/download\/\">Node.Js<\/a><\/li><li><a href=\"https:\/\/yarnpkg.com\/getting-started\/install\">Yarn<\/a> (This is a package manager for node)<\/li><li><a href=\"https:\/\/git-scm.com\/downloads\">Git bash<\/a> (If on windows. It comes preinstalled in Linux most of the time)<\/li><\/ul>\n\n\n\n<p>Assuming, you have the necessary software listed above installed and configured, let&#8217;s get started. <\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Open up a CMD\/ Powershell \/ Linux Terminal and <code>CD<\/code> to a directory of your choice and clone the repository from Git.<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">git clone https:\/\/github.com\/ihsanizwer\/covid19-dash-sl.git<\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\"><li><code>CD<\/code> in to the covid19-dash-sl directory and run the following command from a CMD\/ Powershell \/ Linux Terminal. This will install the dependencies of this application by reading the <code>package.json <\/code>file.<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">yarn install<\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\"><li>Now, run the below command. Upon running this command, you would be prompted to allow the port 3000 from the windows firewall. Click on yes. Suppose there are any errors you would be able to view them from the console.<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">yarn start<\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\"><li>Open up a browser and view the application by visiting <code>http:\/\/localhost:3000<\/code>. At this point, you are able to do changes to the application(source code) and view the changes in real time by opening the above URL in a browser.<\/li><\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"405\" src=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local.png?resize=756%2C405&#038;ssl=1\" alt=\"\" class=\"wp-image-329\" srcset=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local.png?resize=1024%2C549&amp;ssl=1 1024w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local.png?resize=300%2C161&amp;ssl=1 300w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local.png?resize=768%2C412&amp;ssl=1 768w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local.png?resize=1536%2C824&amp;ssl=1 1536w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local.png?resize=1250%2C671&amp;ssl=1 1250w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local.png?resize=200%2C107&amp;ssl=1 200w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local.png?w=1920&amp;ssl=1 1920w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\"><li>(Optional) On rare occasions, you may see an error like this: <em>Node &lt;package&gt; does not yet support your current environment<\/em>. In such cases, you will have to start over by cloning the repository to a new folder. Then instead of the <code>yarn install<\/code>, you can manually install the packages via node using the below command. Finally you can run <code>yarn start<\/code> and view the application from the browser with<code> http:\/\/localhost:3000<\/code>.<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">npm install react-scripts axios node-sass react-bootstrap bootstrap react react-dom<\/pre>\n\n\n\n<p><\/div><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Deploying it to Heroku.<\/h2>\n\n\n\n<p>Before, I show you how we can easily deploy our application to Heroku, Let me write a bit about it. So Heroku allows you to deploy a wide range of applications(node.js based, python based, ruby based etc.) for FREE. This is great because we can use this to showcase our work to the world. In terms of normal workflow we would work on staging and promote it to production when it is ready. We could also set up an additional non-production environment and copy existing production to that before we do this promotion. This means the previous production environment is in a non-production after the promotion. So you can revert the change by swapping once again, if something was to go wrong unexpectedly. Here, you get Blue-Green deployment like setting(but not exactly Blue-Green deployment).<div id=\"main-link-325\" class=\"sh-link main-link sh-show\"><a href=\"#\" onclick=\"showhide_toggle('main', 325, '&#x2195;&#xfe0f; Collapse section, \\'Deploying it to Heroku\\' &#x2195;&#xfe0f;', '&#x2195;&#xfe0f; Expand section, \\'Deploying it to Heroku\\' &#x2195;&#xfe0f;'); return false;\" aria-expanded=\"true\"><span id=\"main-toggle-325\">&#x2195;&#xfe0f; Collapse section, 'Deploying it to Heroku' &#x2195;&#xfe0f;<\/span><\/a><\/div><div id=\"main-content-325\" class=\"sh-content main-content sh-show\" style=\"display: block;\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"370\" src=\"https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-1.png?resize=756%2C370&#038;ssl=1\" alt=\"\" class=\"wp-image-345\" srcset=\"https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-1.png?resize=1024%2C501&amp;ssl=1 1024w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-1.png?resize=300%2C147&amp;ssl=1 300w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-1.png?resize=768%2C376&amp;ssl=1 768w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-1.png?resize=1536%2C752&amp;ssl=1 1536w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-1.png?resize=1250%2C612&amp;ssl=1 1250w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-1.png?resize=200%2C98&amp;ssl=1 200w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-1.png?w=1913&amp;ssl=1 1913w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<p>With that we will get started on the deployment. You may collapse this section if you want to view the previous section more clearly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Clone the application from GitHub, create a new branch and add your changes<\/h3>\n\n\n\n<p>To start off things, I cloned my git repository and setup my application locally. If you want to know how to do that, check the previous section of the blog (Running it locally &#8211; Click on the expand section to view it). Next I created a new branch and switched to it. Command is down below.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git checkout -b stage<\/pre>\n\n\n\n<p>I noticed that the previously when I made the application, the UI was less serious than it should be. (Previous UI screenshot available on previous section). So I changed some colours to elevate the look and feel of this (Edited App.scss). Now it looks like this.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"405\" src=\"https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-2.png?resize=756%2C405&#038;ssl=1\" alt=\"\" class=\"wp-image-347\" srcset=\"https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-2.png?resize=1024%2C548&amp;ssl=1 1024w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-2.png?resize=300%2C161&amp;ssl=1 300w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-2.png?resize=768%2C411&amp;ssl=1 768w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-2.png?resize=1536%2C823&amp;ssl=1 1536w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-2.png?resize=1250%2C669&amp;ssl=1 1250w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-2.png?resize=200%2C107&amp;ssl=1 200w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-2.png?w=1916&amp;ssl=1 1916w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<p>Looks pretty professional huh? &#x1f61d;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Push changes on new branch to GitHub<\/h3>\n\n\n\n<p>Next, publish changes on new branch to GitHub. (You might want to delete the newly created node_modules directory before doing this).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git status #Verify the files to be added and to which branch <\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">git add -A #Add all changes if no issues<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">git status #Verify all required files were added<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">git commit -m \"Created branch - stage. Added required changes\" #Commit the changes<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">git push -u origin stage #Create and push to the new branch \"stage\" of the Original remote repo <\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">git status #Verify if your branch is up to date with origin\/stage<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. Setup the deployment in Heroku<\/h3>\n\n\n\n<p>After that, log in to Heroku or Create an account if you already don&#8217;t have one. Steps for creating an entirely new application and creating a new application in a new environment is almost exactly the same. So here, we will look at creating a new application in a new environment.<\/p>\n\n\n\n<p>First, go to your application and select add App and then click on create new. Then follow these steps in the image.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"371\" src=\"https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku1.png?resize=756%2C371&#038;ssl=1\" alt=\"\" class=\"wp-image-351\" srcset=\"https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku1.png?resize=1024%2C502&amp;ssl=1 1024w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku1.png?resize=300%2C147&amp;ssl=1 300w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku1.png?resize=768%2C377&amp;ssl=1 768w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku1.png?resize=1536%2C754&amp;ssl=1 1536w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku1.png?resize=1250%2C613&amp;ssl=1 1250w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku1.png?resize=200%2C98&amp;ssl=1 200w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku1.png?w=1916&amp;ssl=1 1916w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<p>Next, click on the name of the newly created application.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"365\" src=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku2.png?resize=756%2C365&#038;ssl=1\" alt=\"\" class=\"wp-image-352\" srcset=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku2.png?resize=1024%2C494&amp;ssl=1 1024w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku2.png?resize=300%2C145&amp;ssl=1 300w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku2.png?resize=768%2C371&amp;ssl=1 768w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku2.png?resize=1536%2C741&amp;ssl=1 1536w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku2.png?resize=1250%2C603&amp;ssl=1 1250w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku2.png?resize=200%2C97&amp;ssl=1 200w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku2.png?w=1919&amp;ssl=1 1919w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<p>Switch over to the settings tab and click on the show config vars button.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"370\" src=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-4.png?resize=756%2C370&#038;ssl=1\" alt=\"\" class=\"wp-image-353\" srcset=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-4.png?resize=1024%2C501&amp;ssl=1 1024w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-4.png?resize=300%2C147&amp;ssl=1 300w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-4.png?resize=768%2C376&amp;ssl=1 768w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-4.png?resize=1536%2C752&amp;ssl=1 1536w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-4.png?resize=1250%2C612&amp;ssl=1 1250w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-4.png?resize=200%2C98&amp;ssl=1 200w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-4.png?w=1920&amp;ssl=1 1920w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"371\" src=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-5.png?resize=756%2C371&#038;ssl=1\" alt=\"\" class=\"wp-image-354\" srcset=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-5.png?resize=1024%2C502&amp;ssl=1 1024w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-5.png?resize=300%2C147&amp;ssl=1 300w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-5.png?resize=768%2C377&amp;ssl=1 768w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-5.png?resize=1536%2C754&amp;ssl=1 1536w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-5.png?resize=1250%2C613&amp;ssl=1 1250w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-5.png?resize=200%2C98&amp;ssl=1 200w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-5.png?w=1916&amp;ssl=1 1916w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<p>Next, scroll down to the build pack section and add the following build pack. This is used to build our application. Save changes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"369\" src=\"https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-6.png?resize=756%2C369&#038;ssl=1\" alt=\"\" class=\"wp-image-355\" srcset=\"https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-6.png?resize=1024%2C500&amp;ssl=1 1024w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-6.png?resize=300%2C146&amp;ssl=1 300w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-6.png?resize=768%2C375&amp;ssl=1 768w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-6.png?resize=1536%2C750&amp;ssl=1 1536w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-6.png?resize=1250%2C610&amp;ssl=1 1250w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-6.png?resize=200%2C98&amp;ssl=1 200w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-6.png?w=1920&amp;ssl=1 1920w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-preformatted\">https:\/\/github.com\/mars\/create-react-app-buildpack.git<\/pre>\n\n\n\n<p>Now, click on the deploy tab and select the connect to Github option. Click on the connect to GitHub button at the bottom of the page. You will be asked to sign in to GitHub and authorize. Click on authorize at this point. After that, you can search for your repo and click on connect.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"371\" src=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-7.png?resize=756%2C371&#038;ssl=1\" alt=\"\" class=\"wp-image-356\" srcset=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-7.png?resize=1024%2C502&amp;ssl=1 1024w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-7.png?resize=300%2C147&amp;ssl=1 300w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-7.png?resize=768%2C376&amp;ssl=1 768w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-7.png?resize=1536%2C753&amp;ssl=1 1536w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-7.png?resize=1250%2C613&amp;ssl=1 1250w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-7.png?resize=200%2C98&amp;ssl=1 200w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-7.png?w=1920&amp;ssl=1 1920w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<p>Lastly, scroll down to manual deploy, select the branch and press deploy. You can enable automatic deploy if you want. But at this point I am only deploying manually.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"371\" src=\"https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-8.png?resize=756%2C371&#038;ssl=1\" alt=\"\" class=\"wp-image-357\" srcset=\"https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-8.png?resize=1024%2C503&amp;ssl=1 1024w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-8.png?resize=300%2C148&amp;ssl=1 300w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-8.png?resize=768%2C378&amp;ssl=1 768w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-8.png?resize=1536%2C755&amp;ssl=1 1536w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-8.png?resize=1250%2C615&amp;ssl=1 1250w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-8.png?resize=200%2C98&amp;ssl=1 200w, https:\/\/i0.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-8.png?w=1920&amp;ssl=1 1920w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<p>Now you can sit back and watch the progress. Or go grab a coffee or go for a walk &#x1f604;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"367\" src=\"https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-9.png?resize=756%2C367&#038;ssl=1\" alt=\"\" class=\"wp-image-358\" srcset=\"https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-9.png?resize=1024%2C497&amp;ssl=1 1024w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-9.png?resize=300%2C145&amp;ssl=1 300w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-9.png?resize=768%2C372&amp;ssl=1 768w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-9.png?resize=1536%2C745&amp;ssl=1 1536w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-9.png?resize=1250%2C606&amp;ssl=1 1250w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-9.png?resize=200%2C97&amp;ssl=1 200w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-9.png?w=1918&amp;ssl=1 1918w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<p>Finally it will show that you have completed successfully.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"368\" src=\"https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-10.png?resize=756%2C368&#038;ssl=1\" alt=\"\" class=\"wp-image-359\" srcset=\"https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-10.png?resize=1024%2C498&amp;ssl=1 1024w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-10.png?resize=300%2C146&amp;ssl=1 300w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-10.png?resize=768%2C374&amp;ssl=1 768w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-10.png?resize=1536%2C747&amp;ssl=1 1536w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-10.png?resize=1250%2C608&amp;ssl=1 1250w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-10.png?resize=200%2C97&amp;ssl=1 200w, https:\/\/i1.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-10.png?w=1910&amp;ssl=1 1910w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"389\" src=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-11.png?resize=756%2C389&#038;ssl=1\" alt=\"\" class=\"wp-image-360\" srcset=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-11.png?resize=1024%2C527&amp;ssl=1 1024w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-11.png?resize=300%2C154&amp;ssl=1 300w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-11.png?resize=768%2C395&amp;ssl=1 768w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-11.png?resize=1536%2C790&amp;ssl=1 1536w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-11.png?resize=1250%2C643&amp;ssl=1 1250w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-11.png?resize=200%2C103&amp;ssl=1 200w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-11.png?w=1912&amp;ssl=1 1912w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><figcaption><a href=\"https:\/\/covid19-dash-sl-stg.herokuapp.com\/\">https:\/\/covid19-dash-sl-stg.herokuapp.com\/<\/a><\/figcaption><\/figure>\n\n\n\n<p><\/div><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bonus: Troubleshooting deployments<\/h2>\n\n\n\n<p>Sometimes, things do not go to plan. In these cases, we will have to troubleshoot and fix issues with deployments.<div id=\"link-link-325\" class=\"sh-link link-link sh-hide\"><a href=\"#\" onclick=\"showhide_toggle('link', 325, '&#x2195;&#xfe0f; Expand section, \\'Troubleshooting deployments\\' &#x2195;&#xfe0f;', '&#x2195;&#xfe0f; Collapse section, \\'Troubleshooting deployments\\' &#x2195;&#xfe0f;'); return false;\" aria-expanded=\"false\"><span id=\"link-toggle-325\">&#x2195;&#xfe0f; Expand section, 'Troubleshooting deployments' &#x2195;&#xfe0f;<\/span><\/a><\/div><div id=\"link-content-325\" class=\"sh-content link-content sh-hide\" style=\"display: none;\"><\/p>\n\n\n\n<p>As you can see my builds aren&#8217;t perfect. However, in most cases, you will see the solution to your problem in the logs itself. To view this information, go to the activity tab.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"368\" src=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-12.png?resize=756%2C368&#038;ssl=1\" alt=\"\" class=\"wp-image-361\" srcset=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-12.png?resize=1024%2C499&amp;ssl=1 1024w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-12.png?resize=300%2C146&amp;ssl=1 300w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-12.png?resize=768%2C374&amp;ssl=1 768w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-12.png?resize=1536%2C748&amp;ssl=1 1536w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-12.png?resize=1250%2C609&amp;ssl=1 1250w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-12.png?resize=200%2C97&amp;ssl=1 200w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/image-12.png?w=1907&amp;ssl=1 1907w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"756\" height=\"339\" src=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku3.png?resize=756%2C339&#038;ssl=1\" alt=\"\" class=\"wp-image-362\" srcset=\"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku3.png?resize=1024%2C459&amp;ssl=1 1024w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku3.png?resize=300%2C134&amp;ssl=1 300w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku3.png?resize=768%2C344&amp;ssl=1 768w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku3.png?resize=1536%2C688&amp;ssl=1 1536w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku3.png?resize=1250%2C560&amp;ssl=1 1250w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku3.png?resize=200%2C90&amp;ssl=1 200w, https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/heroku3.png?w=1920&amp;ssl=1 1920w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" data-recalc-dims=\"1\" \/><\/figure>\n\n\n\n<p><\/div><\/p>\n\n\n\n<p>Check out my other featured content at: <a href=\"https:\/\/takeondevops.com\/?cat=4\">Featured &#8211; Take On Devops<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog has been long overdue. I wrote this basic Covid19 dashboard application over a year ago (Application is still live on heroku at: https:\/\/covid19-dash-sl.herokuapp.com). Too bad I couldn&#8217;t write a blog on it. Anyways, I didn&#8217;t think it would be useful cause I was under the impression that Covid19 will be over before we [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":""},"categories":[3,4,6,7],"tags":[],"class_list":["post-325","post","type-post","status-publish","format-standard","hentry","category-dev","category-featured","category-network","category-systems"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Deploying and hosting node.js applications on Heroku - Take On Devops<\/title>\n<meta name=\"description\" content=\"In this blog, we look at running a node\/react app locally and the steps to deploy the same on Heroku. Bonus: Troubleshooting.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/takeondevops.com\/?p=325\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deploying and hosting node.js applications on Heroku - Take On Devops\" \/>\n<meta property=\"og:description\" content=\"In this blog, we look at running a node\/react app locally and the steps to deploy the same on Heroku. Bonus: Troubleshooting.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/takeondevops.com\/?p=325\" \/>\n<meta property=\"og:site_name\" content=\"Take On Devops\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-25T18:03:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-25T18:12:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local-1024x549.png\" \/>\n<meta name=\"author\" content=\"ihsan izwer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ihsan izwer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/takeondevops.com\\\/?p=325#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/takeondevops.com\\\/?p=325\"},\"author\":{\"name\":\"ihsan izwer\",\"@id\":\"https:\\\/\\\/takeondevops.com\\\/#\\\/schema\\\/person\\\/465f2fb632235eb4079002754cd66aeb\"},\"headline\":\"Deploying and hosting node.js applications on Heroku\",\"datePublished\":\"2021-06-25T18:03:32+00:00\",\"dateModified\":\"2021-06-25T18:12:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/takeondevops.com\\\/?p=325\"},\"wordCount\":1213,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/takeondevops.com\\\/?p=325#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/takeondevops.com\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/covid_local-1024x549.png\",\"articleSection\":[\"Dev\",\"Featured\",\"Network\",\"Systems\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/takeondevops.com\\\/?p=325#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/takeondevops.com\\\/?p=325\",\"url\":\"https:\\\/\\\/takeondevops.com\\\/?p=325\",\"name\":\"Deploying and hosting node.js applications on Heroku - Take On Devops\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/takeondevops.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/takeondevops.com\\\/?p=325#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/takeondevops.com\\\/?p=325#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/takeondevops.com\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/covid_local-1024x549.png\",\"datePublished\":\"2021-06-25T18:03:32+00:00\",\"dateModified\":\"2021-06-25T18:12:37+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/takeondevops.com\\\/#\\\/schema\\\/person\\\/465f2fb632235eb4079002754cd66aeb\"},\"description\":\"In this blog, we look at running a node\\\/react app locally and the steps to deploy the same on Heroku. Bonus: Troubleshooting.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/takeondevops.com\\\/?p=325#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/takeondevops.com\\\/?p=325\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/takeondevops.com\\\/?p=325#primaryimage\",\"url\":\"https:\\\/\\\/i2.wp.com\\\/takeondevops.com\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/covid_local.png?fit=1920%2C1030&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i2.wp.com\\\/takeondevops.com\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/covid_local.png?fit=1920%2C1030&ssl=1\",\"width\":1920,\"height\":1030},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/takeondevops.com\\\/?p=325#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/takeondevops.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deploying and hosting node.js applications on Heroku\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/takeondevops.com\\\/#website\",\"url\":\"https:\\\/\\\/takeondevops.com\\\/\",\"name\":\"Take On Devops\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/takeondevops.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/takeondevops.com\\\/#\\\/schema\\\/person\\\/465f2fb632235eb4079002754cd66aeb\",\"name\":\"ihsan izwer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c82c3d13c92d77259746074978cb7d498778b44914dea60ad0367dec237c349f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c82c3d13c92d77259746074978cb7d498778b44914dea60ad0367dec237c349f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c82c3d13c92d77259746074978cb7d498778b44914dea60ad0367dec237c349f?s=96&d=mm&r=g\",\"caption\":\"ihsan izwer\"},\"url\":\"https:\\\/\\\/takeondevops.com\\\/?author=3\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Deploying and hosting node.js applications on Heroku - Take On Devops","description":"In this blog, we look at running a node\/react app locally and the steps to deploy the same on Heroku. Bonus: Troubleshooting.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/takeondevops.com\/?p=325","og_locale":"en_US","og_type":"article","og_title":"Deploying and hosting node.js applications on Heroku - Take On Devops","og_description":"In this blog, we look at running a node\/react app locally and the steps to deploy the same on Heroku. Bonus: Troubleshooting.","og_url":"https:\/\/takeondevops.com\/?p=325","og_site_name":"Take On Devops","article_published_time":"2021-06-25T18:03:32+00:00","article_modified_time":"2021-06-25T18:12:37+00:00","og_image":[{"url":"https:\/\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local-1024x549.png","type":"","width":"","height":""}],"author":"ihsan izwer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"ihsan izwer","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/takeondevops.com\/?p=325#article","isPartOf":{"@id":"https:\/\/takeondevops.com\/?p=325"},"author":{"name":"ihsan izwer","@id":"https:\/\/takeondevops.com\/#\/schema\/person\/465f2fb632235eb4079002754cd66aeb"},"headline":"Deploying and hosting node.js applications on Heroku","datePublished":"2021-06-25T18:03:32+00:00","dateModified":"2021-06-25T18:12:37+00:00","mainEntityOfPage":{"@id":"https:\/\/takeondevops.com\/?p=325"},"wordCount":1213,"commentCount":0,"image":{"@id":"https:\/\/takeondevops.com\/?p=325#primaryimage"},"thumbnailUrl":"https:\/\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local-1024x549.png","articleSection":["Dev","Featured","Network","Systems"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/takeondevops.com\/?p=325#respond"]}]},{"@type":"WebPage","@id":"https:\/\/takeondevops.com\/?p=325","url":"https:\/\/takeondevops.com\/?p=325","name":"Deploying and hosting node.js applications on Heroku - Take On Devops","isPartOf":{"@id":"https:\/\/takeondevops.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/takeondevops.com\/?p=325#primaryimage"},"image":{"@id":"https:\/\/takeondevops.com\/?p=325#primaryimage"},"thumbnailUrl":"https:\/\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local-1024x549.png","datePublished":"2021-06-25T18:03:32+00:00","dateModified":"2021-06-25T18:12:37+00:00","author":{"@id":"https:\/\/takeondevops.com\/#\/schema\/person\/465f2fb632235eb4079002754cd66aeb"},"description":"In this blog, we look at running a node\/react app locally and the steps to deploy the same on Heroku. Bonus: Troubleshooting.","breadcrumb":{"@id":"https:\/\/takeondevops.com\/?p=325#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/takeondevops.com\/?p=325"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/takeondevops.com\/?p=325#primaryimage","url":"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local.png?fit=1920%2C1030&ssl=1","contentUrl":"https:\/\/i2.wp.com\/takeondevops.com\/wp-content\/uploads\/2021\/06\/covid_local.png?fit=1920%2C1030&ssl=1","width":1920,"height":1030},{"@type":"BreadcrumbList","@id":"https:\/\/takeondevops.com\/?p=325#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/takeondevops.com\/"},{"@type":"ListItem","position":2,"name":"Deploying and hosting node.js applications on Heroku"}]},{"@type":"WebSite","@id":"https:\/\/takeondevops.com\/#website","url":"https:\/\/takeondevops.com\/","name":"Take On Devops","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/takeondevops.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/takeondevops.com\/#\/schema\/person\/465f2fb632235eb4079002754cd66aeb","name":"ihsan izwer","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c82c3d13c92d77259746074978cb7d498778b44914dea60ad0367dec237c349f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c82c3d13c92d77259746074978cb7d498778b44914dea60ad0367dec237c349f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c82c3d13c92d77259746074978cb7d498778b44914dea60ad0367dec237c349f?s=96&d=mm&r=g","caption":"ihsan izwer"},"url":"https:\/\/takeondevops.com\/?author=3"}]}},"jetpack_featured_media_url":"","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/takeondevops.com\/index.php?rest_route=\/wp\/v2\/posts\/325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/takeondevops.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/takeondevops.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/takeondevops.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/takeondevops.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=325"}],"version-history":[{"count":28,"href":"https:\/\/takeondevops.com\/index.php?rest_route=\/wp\/v2\/posts\/325\/revisions"}],"predecessor-version":[{"id":1615,"href":"https:\/\/takeondevops.com\/index.php?rest_route=\/wp\/v2\/posts\/325\/revisions\/1615"}],"wp:attachment":[{"href":"https:\/\/takeondevops.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/takeondevops.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=325"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/takeondevops.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}