Lab - Node JS - Deploy Express

hi. @mmumshad / @KodeKloud

In lab Node - JS - Deploy express when I am running app.js using npm run command I am able to verify ithe app using 2 methods

  1. By using curl localhost:300
    This gives me output

thor@host01 /opt/the-example-app.nodejs$ curl localhost:3000
Found. Redirecting to https://localhost/thor@host01 /opt/the-example-app.nodejs$

  1. By clicking on the tabs which are the top beside Terminal on localhost:3000
    This shows me a proper webpage that the app.js is running.

When I stop this app using kill , these 2 above methods no more displays the app. I conclude these 2 methods are right verification methods to find out whether the app.js is running . Am I correct ?

hor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ nohup npm run start:production &
[1] 5122
thor@host01 /opt/the-example-app.nodejs$ nohup: ignoring input and appending output to ‘/home/thor/nohup.out’

thor@host01 /opt/the-example-app.nodejs$ curl http://localhost:3000
Found. Redirecting to https://localhost/thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$

For more details see ps(1).
thor@host01 /opt/the-example-app.nodejs$ kill 5133
thor@host01 /opt/the-example-app.nodejs$
[1]+  Done                    nohup npm run start:production
thor@host01 /opt/the-example-app.nodejs$ ps -ef | grep node
thor      5150    48  0 13:11 pts/1    00:00:00 grep --color=auto node
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$



hor@host01 /opt/the-example-app.nodejs$ nohup pm2 start app.js &
[1] 5678
thor@host01 /opt/the-example-app.nodejs$ nohup: ignoring input and appending output to ‘/home/thor/nohup.out’

[1]+  Exit 1                  nohup pm2 start app.js
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ ps -ef | grep app
thor      5766   574  9 13:12 ?        00:00:00 node /opt/the-example-app.nodejs/app.js
thor      5794    48  0 13:12 pts/1    00:00:00 grep --color=auto app
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ curl localhost:3000
curl: (7) Failed to connect to ::1: Cannot assign requested address
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ curl www.127.0.0.0:3000
curl: (6) Could not resolve host: www.127.0.0.0; Unknown error
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ cat /home/thor/nohup.out

> example-contentful-theExampleApp-js@0.0.0 start:dev /opt/the-example-app.nodejs
> node ./bin/www

Listening on http://localhost:3000
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 200 726.497 ms - 10175
GET /images/the-example-app-logo-nodejs.svg 304 3.319 ms - -
GET /stylesheets/style.css 304 0.591 ms - -
GET /scripts/index.js 304 0.816 ms - -
GET /images/contentful-logo.svg 304 0.530 ms - -
GET /images/icon-nodejs.svg 304 1.751 ms - -
GET /images/icon-ruby.svg 304 1.688 ms - -
GET /images/icon-dotnet.svg 304 0.531 ms - -
GET /images/icon-php.svg 304 0.415 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 1.094 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 0.968 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.799 ms - -
GET /images/icon-python.svg 304 0.360 ms - -
GET /images/icon-swift.svg 304 0.423 ms - -
GET /images/icon-java.svg 304 0.359 ms - -
GET /images/icon-android.svg 304 0.692 ms - -
GET /icons/icons.svg 304 0.688 ms - -
GET /manifest.json 304 0.746 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 200 660.400 ms - 10175
GET /stylesheets/style.css 304 3.264 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 0.918 ms - -
GET /scripts/index.js 304 1.200 ms - -
GET /images/contentful-logo.svg 304 0.601 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 1.009 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 0.695 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.511 ms - -
GET /images/icon-nodejs.svg 304 0.377 ms - -
GET /images/icon-dotnet.svg 304 0.538 ms - -
GET /images/icon-ruby.svg 304 0.566 ms - -
GET /images/icon-python.svg 304 2.069 ms - -
GET /images/icon-php.svg 304 2.048 ms - -
GET /images/icon-swift.svg 304 0.799 ms - -
GET /images/icon-java.svg 304 0.430 ms - -
GET /images/icon-android.svg 304 0.609 ms - -
GET /icons/icons.svg 304 0.600 ms - -
GET /manifest.json 304 0.858 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 304 691.635 ms - -
GET /stylesheets/style.css 304 3.812 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 0.942 ms - -
GET /images/contentful-logo.svg 304 2.009 ms - -
GET /scripts/index.js 304 2.419 ms - -
GET /images/icon-dotnet.svg 304 1.658 ms - -
GET /images/icon-nodejs.svg 304 1.134 ms - -
GET /images/icon-ruby.svg 304 0.894 ms - -
GET /images/icon-php.svg 304 1.090 ms - -
GET /images/icon-python.svg 304 1.561 ms - -
GET /images/icon-swift.svg 304 1.145 ms - -
GET /images/icon-java.svg 304 1.179 ms - -
GET /images/icon-android.svg 304 1.114 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 0.846 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 0.932 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.447 ms - -
GET /icons/icons.svg 304 0.453 ms - -
GET /manifest.json 304 0.869 ms - -
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 304 174.333 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 2.100 ms - -
GET /stylesheets/style.css 304 2.163 ms - -
GET /scripts/index.js 304 4.665 ms - -
GET /images/contentful-logo.svg 304 4.737 ms - -
GET /images/icon-nodejs.svg 304 1.915 ms - -
GET /images/icon-dotnet.svg 304 1.261 ms - -
GET /images/icon-ruby.svg 304 1.200 ms - -
GET /images/icon-php.svg 304 0.399 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 1.959 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 1.834 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 1.058 ms - -
GET /images/icon-python.svg 304 1.580 ms - -
GET /images/icon-swift.svg 304 0.610 ms - -
GET /images/icon-java.svg 304 0.333 ms - -
GET /images/icon-android.svg 304 0.747 ms - -
GET /icons/icons.svg 304 0.707 ms - -
GET /manifest.json 304 0.714 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 200 728.773 ms - 10175
GET /stylesheets/style.css 304 3.759 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 0.866 ms - -
GET /scripts/index.js 304 1.189 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 0.855 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.720 ms - -
GET /images/contentful-logo.svg 304 1.719 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 1.840 ms - -
GET /images/icon-nodejs.svg 304 0.879 ms - -
GET /images/icon-dotnet.svg 304 0.559 ms - -
GET /images/icon-ruby.svg 304 0.609 ms - -
GET /images/icon-python.svg 304 1.202 ms - -
GET /images/icon-swift.svg 304 0.984 ms - -
GET /images/icon-php.svg 304 0.979 ms - -
GET /images/icon-android.svg 304 1.549 ms - -
GET /images/icon-java.svg 304 1.483 ms - -
GET /icons/icons.svg 304 0.609 ms - -
GET /manifest.json 304 0.765 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
GET / 302 18.006 ms - 40
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:535:11)
    at ServerResponse.header (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:767:10)
    at ServerResponse.send (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:170:12)
    at done (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1004:10)
    at Object.exports.renderFile (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:446:12)
    at View.exports.__express [as engine] (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:491:11)
    at View.render (/opt/the-example-app.nodejs/node_modules/express/lib/view.js:135:8)
    at tryRender (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:640:10)
    at Function.render (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1008:7)
GET / 302 1.100 ms - 40
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:535:11)
    at ServerResponse.header (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:767:10)
    at ServerResponse.send (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:170:12)
    at done (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1004:10)
    at Object.exports.renderFile (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:446:12)
    at View.exports.__express [as engine] (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:491:11)
    at View.render (/opt/the-example-app.nodejs/node_modules/express/lib/view.js:135:8)
    at tryRender (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:640:10)
    at Function.render (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1008:7)
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 304 435.787 ms - -
GET /stylesheets/style.css 304 2.817 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 0.446 ms - -
GET /scripts/index.js 304 0.972 ms - -
GET /images/icon-dotnet.svg 304 3.094 ms - -
GET /images/icon-nodejs.svg 304 3.332 ms - -
GET /images/contentful-logo.svg 304 2.899 ms - -
GET /images/icon-ruby.svg 304 0.983 ms - -
GET /images/icon-php.svg 304 2.012 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 0.867 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 1.621 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.720 ms - -
GET /images/icon-swift.svg 304 1.973 ms - -
GET /images/icon-python.svg 304 1.951 ms - -
GET /images/icon-java.svg 304 1.867 ms - -
GET /icons/icons.svg 304 1.541 ms - -
GET /images/icon-android.svg 304 1.652 ms - -
GET /manifest.json 304 0.819 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
GET / 302 7.539 ms - 40
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:535:11)
    at ServerResponse.header (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:767:10)
    at ServerResponse.send (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:170:12)
    at done (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1004:10)
    at Object.exports.renderFile (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:446:12)
    at View.exports.__express [as engine] (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:491:11)
    at View.render (/opt/the-example-app.nodejs/node_modules/express/lib/view.js:135:8)
    at tryRender (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:640:10)
    at Function.render (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1008:7)
[PM2] Starting /opt/the-example-app.nodejs/app.js in fork_mode (1 instance)
[PM2] Done.
┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name   │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ app    │ default     │ 0.0.0   │ fork    │ 5159     │ 0s     │ 0    │ online    │ 0%       │ 21.4mb   │ thor     │ disabled │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[PM2][ERROR] Script already launched, add -f option to force re-execution
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ curl http://localhost:3000
curl: (7) Failed to connect to ::1: Cannot assign requested address
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$

But when I launch the same app app.js using PM2 why is that my verification using both the above methods fails .

I could not verify using curl localhost:3000 command ?

Why am I not able to see the same webpage which I was able to see using node run app.js ( without using PM2 ) when I click on the same tab localhost:3000

I am under assumptions using PM2 app.js running correctly but I am struggling to verify . If I check using he checks of your lab the check passes . But why above 2 checks are not useful while running same app with PM2 ?

with best regards
Pradeep Nehe

hi

I see same issue when I am using -i 4

thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ nohup pm2 start app.js &
[1] 5678
thor@host01 /opt/the-example-app.nodejs$ nohup: ignoring input and appending output to ‘/home/thor/nohup.out’

[1]+  Exit 1                  nohup pm2 start app.js
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ ps -ef | grep app
thor      5766   574  9 13:12 ?        00:00:00 node /opt/the-example-app.nodejs/app.js
thor      5794    48  0 13:12 pts/1    00:00:00 grep --color=auto app
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ curl localhost:3000
curl: (7) Failed to connect to ::1: Cannot assign requested address
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ curl www.127.0.0.0:3000
curl: (6) Could not resolve host: www.127.0.0.0; Unknown error
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ cat /home/thor/nohup.out

> example-contentful-theExampleApp-js@0.0.0 start:dev /opt/the-example-app.nodejs
> node ./bin/www

Listening on http://localhost:3000
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 200 726.497 ms - 10175
GET /images/the-example-app-logo-nodejs.svg 304 3.319 ms - -
GET /stylesheets/style.css 304 0.591 ms - -
GET /scripts/index.js 304 0.816 ms - -
GET /images/contentful-logo.svg 304 0.530 ms - -
GET /images/icon-nodejs.svg 304 1.751 ms - -
GET /images/icon-ruby.svg 304 1.688 ms - -
GET /images/icon-dotnet.svg 304 0.531 ms - -
GET /images/icon-php.svg 304 0.415 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 1.094 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 0.968 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.799 ms - -
GET /images/icon-python.svg 304 0.360 ms - -
GET /images/icon-swift.svg 304 0.423 ms - -
GET /images/icon-java.svg 304 0.359 ms - -
GET /images/icon-android.svg 304 0.692 ms - -
GET /icons/icons.svg 304 0.688 ms - -
GET /manifest.json 304 0.746 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 200 660.400 ms - 10175
GET /stylesheets/style.css 304 3.264 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 0.918 ms - -
GET /scripts/index.js 304 1.200 ms - -
GET /images/contentful-logo.svg 304 0.601 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 1.009 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 0.695 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.511 ms - -
GET /images/icon-nodejs.svg 304 0.377 ms - -
GET /images/icon-dotnet.svg 304 0.538 ms - -
GET /images/icon-ruby.svg 304 0.566 ms - -
GET /images/icon-python.svg 304 2.069 ms - -
GET /images/icon-php.svg 304 2.048 ms - -
GET /images/icon-swift.svg 304 0.799 ms - -
GET /images/icon-java.svg 304 0.430 ms - -
GET /images/icon-android.svg 304 0.609 ms - -
GET /icons/icons.svg 304 0.600 ms - -
GET /manifest.json 304 0.858 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 304 691.635 ms - -
GET /stylesheets/style.css 304 3.812 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 0.942 ms - -
GET /images/contentful-logo.svg 304 2.009 ms - -
GET /scripts/index.js 304 2.419 ms - -
GET /images/icon-dotnet.svg 304 1.658 ms - -
GET /images/icon-nodejs.svg 304 1.134 ms - -
GET /images/icon-ruby.svg 304 0.894 ms - -
GET /images/icon-php.svg 304 1.090 ms - -
GET /images/icon-python.svg 304 1.561 ms - -
GET /images/icon-swift.svg 304 1.145 ms - -
GET /images/icon-java.svg 304 1.179 ms - -
GET /images/icon-android.svg 304 1.114 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 0.846 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 0.932 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.447 ms - -
GET /icons/icons.svg 304 0.453 ms - -
GET /manifest.json 304 0.869 ms - -
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 304 174.333 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 2.100 ms - -
GET /stylesheets/style.css 304 2.163 ms - -
GET /scripts/index.js 304 4.665 ms - -
GET /images/contentful-logo.svg 304 4.737 ms - -
GET /images/icon-nodejs.svg 304 1.915 ms - -
GET /images/icon-dotnet.svg 304 1.261 ms - -
GET /images/icon-ruby.svg 304 1.200 ms - -
GET /images/icon-php.svg 304 0.399 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 1.959 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 1.834 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 1.058 ms - -
GET /images/icon-python.svg 304 1.580 ms - -
GET /images/icon-swift.svg 304 0.610 ms - -
GET /images/icon-java.svg 304 0.333 ms - -
GET /images/icon-android.svg 304 0.747 ms - -
GET /icons/icons.svg 304 0.707 ms - -
GET /manifest.json 304 0.714 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 200 728.773 ms - 10175
GET /stylesheets/style.css 304 3.759 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 0.866 ms - -
GET /scripts/index.js 304 1.189 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 0.855 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.720 ms - -
GET /images/contentful-logo.svg 304 1.719 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 1.840 ms - -
GET /images/icon-nodejs.svg 304 0.879 ms - -
GET /images/icon-dotnet.svg 304 0.559 ms - -
GET /images/icon-ruby.svg 304 0.609 ms - -
GET /images/icon-python.svg 304 1.202 ms - -
GET /images/icon-swift.svg 304 0.984 ms - -
GET /images/icon-php.svg 304 0.979 ms - -
GET /images/icon-android.svg 304 1.549 ms - -
GET /images/icon-java.svg 304 1.483 ms - -
GET /icons/icons.svg 304 0.609 ms - -
GET /manifest.json 304 0.765 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
GET / 302 18.006 ms - 40
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:535:11)
    at ServerResponse.header (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:767:10)
    at ServerResponse.send (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:170:12)
    at done (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1004:10)
    at Object.exports.renderFile (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:446:12)
    at View.exports.__express [as engine] (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:491:11)
    at View.render (/opt/the-example-app.nodejs/node_modules/express/lib/view.js:135:8)
    at tryRender (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:640:10)
    at Function.render (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1008:7)
GET / 302 1.100 ms - 40
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:535:11)
    at ServerResponse.header (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:767:10)
    at ServerResponse.send (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:170:12)
    at done (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1004:10)
    at Object.exports.renderFile (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:446:12)
    at View.exports.__express [as engine] (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:491:11)
    at View.render (/opt/the-example-app.nodejs/node_modules/express/lib/view.js:135:8)
    at tryRender (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:640:10)
    at Function.render (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1008:7)
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 304 435.787 ms - -
GET /stylesheets/style.css 304 2.817 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 0.446 ms - -
GET /scripts/index.js 304 0.972 ms - -
GET /images/icon-dotnet.svg 304 3.094 ms - -
GET /images/icon-nodejs.svg 304 3.332 ms - -
GET /images/contentful-logo.svg 304 2.899 ms - -
GET /images/icon-ruby.svg 304 0.983 ms - -
GET /images/icon-php.svg 304 2.012 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 0.867 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 1.621 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.720 ms - -
GET /images/icon-swift.svg 304 1.973 ms - -
GET /images/icon-python.svg 304 1.951 ms - -
GET /images/icon-java.svg 304 1.867 ms - -
GET /icons/icons.svg 304 1.541 ms - -
GET /images/icon-android.svg 304 1.652 ms - -
GET /manifest.json 304 0.819 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
GET / 302 7.539 ms - 40
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:535:11)
    at ServerResponse.header (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:767:10)
    at ServerResponse.send (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:170:12)
    at done (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1004:10)
    at Object.exports.renderFile (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:446:12)
    at View.exports.__express [as engine] (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:491:11)
    at View.render (/opt/the-example-app.nodejs/node_modules/express/lib/view.js:135:8)
    at tryRender (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:640:10)
    at Function.render (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1008:7)
[PM2] Starting /opt/the-example-app.nodejs/app.js in fork_mode (1 instance)
[PM2] Done.
┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name   │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ app    │ default     │ 0.0.0   │ fork    │ 5159     │ 0s     │ 0    │ online    │ 0%       │ 21.4mb   │ thor     │ disabled │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[PM2][ERROR] Script already launched, add -f option to force re-execution
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ curl http://localhost:3000
curl: (7) Failed to connect to ::1: Cannot assign requested address
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ pm2 delete app.js
[PM2] Applying action deleteProcessId on app [app.js](ids: [ 0 ])
[PM2] [app](0) ✓
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ nohup pm2 start app.js -i 4 &
[1] 10953
thor@host01 /opt/the-example-app.nodejs$ nohup: ignoring input and appending output to ‘/home/thor/nohup.out’

[1]+  Done                    nohup pm2 start app.js -i 4
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ curl localhost:3000
curl: (7) Failed to connect to ::1: Cannot assign requested address
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ ps -ef | grep pm2
thor       574     1  0 12:43 ?        00:00:11 PM2 v4.5.1: God Daemon (/home/thor/.pm2)
thor     11071    48  0 13:23 pts/1    00:00:00 grep --color=auto pm2
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ ps -ef | grep app.js
thor     10960   574  1 13:22 ?        00:00:00 node /opt/the-example-app.nodejs/app.js
thor     10967   574  1 13:22 ?        00:00:00 node /opt/the-example-app.nodejs/app.js
thor     10978   574  1 13:22 ?        00:00:00 node /opt/the-example-app.nodejs/app.js
thor     10999   574  1 13:22 ?        00:00:00 node /opt/the-example-app.nodejs/app.js
thor     11073    48  0 13:23 pts/1    00:00:00 grep --color=auto app.js
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ cat /home/thor/nohup.out

> example-contentful-theExampleApp-js@0.0.0 start:dev /opt/the-example-app.nodejs
> node ./bin/www

Listening on http://localhost:3000
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 200 726.497 ms - 10175
GET /images/the-example-app-logo-nodejs.svg 304 3.319 ms - -
GET /stylesheets/style.css 304 0.591 ms - -
GET /scripts/index.js 304 0.816 ms - -
GET /images/contentful-logo.svg 304 0.530 ms - -
GET /images/icon-nodejs.svg 304 1.751 ms - -
GET /images/icon-ruby.svg 304 1.688 ms - -
GET /images/icon-dotnet.svg 304 0.531 ms - -
GET /images/icon-php.svg 304 0.415 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 1.094 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 0.968 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.799 ms - -
GET /images/icon-python.svg 304 0.360 ms - -
GET /images/icon-swift.svg 304 0.423 ms - -
GET /images/icon-java.svg 304 0.359 ms - -
GET /images/icon-android.svg 304 0.692 ms - -
GET /icons/icons.svg 304 0.688 ms - -
GET /manifest.json 304 0.746 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 200 660.400 ms - 10175
GET /stylesheets/style.css 304 3.264 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 0.918 ms - -
GET /scripts/index.js 304 1.200 ms - -
GET /images/contentful-logo.svg 304 0.601 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 1.009 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 0.695 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.511 ms - -
GET /images/icon-nodejs.svg 304 0.377 ms - -
GET /images/icon-dotnet.svg 304 0.538 ms - -
GET /images/icon-ruby.svg 304 0.566 ms - -
GET /images/icon-python.svg 304 2.069 ms - -
GET /images/icon-php.svg 304 2.048 ms - -
GET /images/icon-swift.svg 304 0.799 ms - -
GET /images/icon-java.svg 304 0.430 ms - -
GET /images/icon-android.svg 304 0.609 ms - -
GET /icons/icons.svg 304 0.600 ms - -
GET /manifest.json 304 0.858 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 304 691.635 ms - -
GET /stylesheets/style.css 304 3.812 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 0.942 ms - -
GET /images/contentful-logo.svg 304 2.009 ms - -
GET /scripts/index.js 304 2.419 ms - -
GET /images/icon-dotnet.svg 304 1.658 ms - -
GET /images/icon-nodejs.svg 304 1.134 ms - -
GET /images/icon-ruby.svg 304 0.894 ms - -
GET /images/icon-php.svg 304 1.090 ms - -
GET /images/icon-python.svg 304 1.561 ms - -
GET /images/icon-swift.svg 304 1.145 ms - -
GET /images/icon-java.svg 304 1.179 ms - -
GET /images/icon-android.svg 304 1.114 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 0.846 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 0.932 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.447 ms - -
GET /icons/icons.svg 304 0.453 ms - -
GET /manifest.json 304 0.869 ms - -
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 304 174.333 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 2.100 ms - -
GET /stylesheets/style.css 304 2.163 ms - -
GET /scripts/index.js 304 4.665 ms - -
GET /images/contentful-logo.svg 304 4.737 ms - -
GET /images/icon-nodejs.svg 304 1.915 ms - -
GET /images/icon-dotnet.svg 304 1.261 ms - -
GET /images/icon-ruby.svg 304 1.200 ms - -
GET /images/icon-php.svg 304 0.399 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 1.959 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 1.834 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 1.058 ms - -
GET /images/icon-python.svg 304 1.580 ms - -
GET /images/icon-swift.svg 304 0.610 ms - -
GET /images/icon-java.svg 304 0.333 ms - -
GET /images/icon-android.svg 304 0.747 ms - -
GET /icons/icons.svg 304 0.707 ms - -
GET /manifest.json 304 0.714 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 200 728.773 ms - 10175
GET /stylesheets/style.css 304 3.759 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 0.866 ms - -
GET /scripts/index.js 304 1.189 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 0.855 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.720 ms - -
GET /images/contentful-logo.svg 304 1.719 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 1.840 ms - -
GET /images/icon-nodejs.svg 304 0.879 ms - -
GET /images/icon-dotnet.svg 304 0.559 ms - -
GET /images/icon-ruby.svg 304 0.609 ms - -
GET /images/icon-python.svg 304 1.202 ms - -
GET /images/icon-swift.svg 304 0.984 ms - -
GET /images/icon-php.svg 304 0.979 ms - -
GET /images/icon-android.svg 304 1.549 ms - -
GET /images/icon-java.svg 304 1.483 ms - -
GET /icons/icons.svg 304 0.609 ms - -
GET /manifest.json 304 0.765 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
GET / 302 18.006 ms - 40
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:535:11)
    at ServerResponse.header (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:767:10)
    at ServerResponse.send (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:170:12)
    at done (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1004:10)
    at Object.exports.renderFile (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:446:12)
    at View.exports.__express [as engine] (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:491:11)
    at View.render (/opt/the-example-app.nodejs/node_modules/express/lib/view.js:135:8)
    at tryRender (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:640:10)
    at Function.render (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1008:7)
GET / 302 1.100 ms - 40
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:535:11)
    at ServerResponse.header (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:767:10)
    at ServerResponse.send (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:170:12)
    at done (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1004:10)
    at Object.exports.renderFile (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:446:12)
    at View.exports.__express [as engine] (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:491:11)
    at View.render (/opt/the-example-app.nodejs/node_modules/express/lib/view.js:135:8)
    at tryRender (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:640:10)
    at Function.render (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1008:7)
marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will beremoved in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options
GET / 304 435.787 ms - -
GET /stylesheets/style.css 304 2.817 ms - -
GET /images/the-example-app-logo-nodejs.svg 304 0.446 ms - -
GET /scripts/index.js 304 0.972 ms - -
GET /images/icon-dotnet.svg 304 3.094 ms - -
GET /images/icon-nodejs.svg 304 3.332 ms - -
GET /images/contentful-logo.svg 304 2.899 ms - -
GET /images/icon-ruby.svg 304 0.983 ms - -
GET /images/icon-php.svg 304 2.012 ms - -
GET /fonts/roboto-regular-webfont.woff2 304 0.867 ms - -
GET /fonts/roboto-bold-webfont.woff2 304 1.621 ms - -
GET /fonts/roboto-medium-webfont.woff2 304 0.720 ms - -
GET /images/icon-swift.svg 304 1.973 ms - -
GET /images/icon-python.svg 304 1.951 ms - -
GET /images/icon-java.svg 304 1.867 ms - -
GET /icons/icons.svg 304 1.541 ms - -
GET /images/icon-android.svg 304 1.652 ms - -
GET /manifest.json 304 0.819 ms - -

> example-contentful-theExampleApp-js@0.0.0 start:production /opt/the-example-app.nodejs
> NODE_ENV=production node ./bin/www

Listening on http://localhost:3000
GET / 302 7.539 ms - 40
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:535:11)
    at ServerResponse.header (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:767:10)
    at ServerResponse.send (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:170:12)
    at done (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1004:10)
    at Object.exports.renderFile (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:446:12)
    at View.exports.__express [as engine] (/opt/the-example-app.nodejs/node_modules/pug/lib/index.js:491:11)
    at View.render (/opt/the-example-app.nodejs/node_modules/express/lib/view.js:135:8)
    at tryRender (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:640:10)
    at Function.render (/opt/the-example-app.nodejs/node_modules/express/lib/application.js:592:3)
    at ServerResponse.render (/opt/the-example-app.nodejs/node_modules/express/lib/response.js:1008:7)
[PM2] Starting /opt/the-example-app.nodejs/app.js in fork_mode (1 instance)
[PM2] Done.
┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name   │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ app    │ default     │ 0.0.0   │ fork    │ 5159     │ 0s     │ 0    │ online    │ 0%       │ 21.4mb   │ thor     │ disabled │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[PM2][ERROR] Script already launched, add -f option to force re-execution
[PM2] Starting /opt/the-example-app.nodejs/app.js in cluster_mode (4 instances)
[PM2] Done.
┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name   │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ app    │ default     │ 0.0.0   │ cluster │ 10960    │ 0s     │ 0    │ online    │ 0%       │ 45.6mb   │ thor     │ disabled │
│ 1   │ app    │ default     │ 0.0.0   │ cluster │ 10967    │ 0s     │ 0    │ online    │ 0%       │ 38.1mb   │ thor     │ disabled │
│ 2   │ app    │ default     │ 0.0.0   │ cluster │ 10978    │ 0s     │ 0    │ online    │ 0%       │ 36.4mb   │ thor     │ disabled │
│ 3   │ app    │ default     │ 0.0.0   │ cluster │ 10999    │ 0s     │ 0    │ online    │ 0%       │ 36.7mb   │ thor     │ disabled │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$
thor@host01 /opt/the-example-app.nodejs$ date
Tue Jan 26 13:23:55 UTC 2021
thor@host01 /opt/the-example-app.nodejs$

I have exactly similar issue when I use Gunicorn to run python based app in earlier lab.
Without using Gunicorn both of my checks passes when I use plain pip ( curl and localtab:5000 )

Is there anything I am missing on why verification fails when we use webframeworks like Gunicorn in Python Lab or PM2 in NodeJS labs.

@ppnehe are you even able to verify while executing node app.js? I cannot. In the hint it says node app.js command will simply exit without any failure. I don’t understand what does this mean basically in terms of the application running.