avatarhzh
avatarhzh

Reputation: 2383

Heroku Deployment Application Error

I'm trying to deploy an API I wrote with Express and Node. I've tried deploying it both by connecting to Github and by using Heroku Toolbelt. Doing it both ways it says in the logs the app has deployed successfully but I go to the page and it always says:

Application Error

An error occurred in the application and your page could not be served. Please try again in a few moments.

If you are the application owner, check your logs for details.

I've made a Procfile with web: node index.js

Here's the code in my package.json and index.js files:

package.json:

{
  "name": "timestamp-microservice",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "edward-hong",
  "repository": {
    "type": "git",
    "url": "https://github.com/edward-hong/timestamp-microservice.git"
  },
  "license": "ISC",
  "engines": {
    "node": "4.4.0"
  },
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "body-parser": "^1.15.1",
    "express": "^4.13.4",
    "moment": "^2.13.0"
  }
}

index.js:

var express = require('express');
var bodyParser = require('body-parser');
var moment = require('moment');
var port = process.env.PORT || 3000;
var app = express();
var timeRouter = express.Router();
timeRouter.use(bodyParser.json());
timeRouter.route('/:time')
  .get(function(req, res, next){
    var time = req.params.time;
    var unixTime = Number(time);
    if (unixTime){
      res.json({'unix': unixTime, 'natural': moment.unix(unixTime).format('MMMM D, YYYY')});
    } else {
      if (moment(time).isValid()){
        res.json({'unix': Number(moment(time).format('X')), 'natural': moment(time).format('MMMM D, YYYY')});
      } else {
        res.json({'unix': null, 'natural': null});
      }
    }
  });
app.use('/', timeRouter);
app.use(express.static(__dirname, 'index.html'));
app.listen(port, function(){
  console.log('Server running at http://oursite:' + port);
});

Here are the logs:

2016-05-14T09:28:27.238579+00:00 heroku[web.1]: Process exited with status 1
2016-05-14T09:28:47.111767+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=eh-timestamp-microservice.herokuapp.com request_id=4fe2d06a-8476-4e70-9b0d-c88c68f9f6b1 fwd="163.47.236.3" dyno= connect= service= status=503 bytes=
2016-05-14T09:28:48.422607+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=eh-timestamp-microservice.herokuapp.com request_id=80b36992-82a7-4938-8a2e-4e0abec86663 fwd="163.47.236.3" dyno= connect= service= status=503 bytes=
2016-05-14T09:39:28.089591+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-14T09:39:29.564906+00:00 heroku[web.1]: Starting process with command `node index.js`
2016-05-14T09:39:32.277699+00:00 app[web.1]: /app/node_modules/express/node_modules/serve-static/index.js:47
2016-05-14T09:39:32.277742+00:00 app[web.1]:   var opts = Object.create(options || null)
2016-05-14T09:39:32.277760+00:00 app[web.1]:                     ^
2016-05-14T09:39:32.277770+00:00 app[web.1]:
2016-05-14T09:39:32.277795+00:00 app[web.1]: TypeError: Object prototype may only be an Object or null: index.html
2016-05-14T09:39:32.277798+00:00 app[web.1]:     at Function.serveStatic [as static] (/app/node_modules/express/node_modules/serve-static/index.js:47:21)
2016-05-14T09:39:32.277797+00:00 app[web.1]:     at Function.create (native)
2016-05-14T09:39:32.277798+00:00 app[web.1]:     at Object.<anonymous> (/app/index.js:23:23)
2016-05-14T09:39:32.277799+00:00 app[web.1]:     at Module._compile (module.js:409:26)
2016-05-14T09:39:32.277802+00:00 app[web.1]:     at startup (node.js:139:18)
2016-05-14T09:39:32.277812+00:00 app[web.1]:     at node.js:968:3
2016-05-14T09:39:32.277800+00:00 app[web.1]:     at Module.load (module.js:343:32)
2016-05-14T09:39:32.277799+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:416:10)
2016-05-14T09:39:32.277800+00:00 app[web.1]:     at Function.Module._load (module.js:300:12)
2016-05-14T09:39:32.277801+00:00 app[web.1]:     at Function.Module.runMain (module.js:441:10)
2016-05-14T09:39:33.321097+00:00 heroku[web.1]: Process exited with status 1
2016-05-14T09:39:33.343282+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-14T09:40:18.797349+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/robots.txt" host=eh-timestamp-microservice.herokuapp.com request_id=a351f860-7b5c-4ce7-a3b3-65fbb419b44f fwd="91.121.64.34" dyno= connect= service= status=503 bytes=
2016-05-14T09:40:19.725084+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=eh-timestamp-microservice.herokuapp.com request_id=9627bc3a-51e0-470d-8a19-60dfda8df6b2 fwd="51.255.122.75" dyno= connect= service= status=503 bytes=
2016-05-14T09:43:03.346097+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=eh-timestamp-microservice.herokuapp.com request_id=da725ac8-1aa6-4801-b33c-875395c97f8f fwd="122.171.196.55" dyno= connect= service= status=503 bytes=
2016-05-14T09:43:05.023995+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=eh-timestamp-microservice.herokuapp.com request_id=3e13f96b-4605-4b12-891f-d2add65e32a6 fwd="122.171.196.55" dyno= connect= service= status=503 bytes=
2016-05-14T09:43:55.572621+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/?123" host=eh-timestamp-microservice.herokuapp.com request_id=e4142733-b39e-44da-964d-b2507c7fdfd6 fwd="122.171.196.55" dyno= connect= service= status=503 bytes=
2016-05-14T09:43:55.958412+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=eh-timestamp-microservice.herokuapp.com request_id=597b272e-dd2b-4646-a099-1ca009bb49c7 fwd="122.171.196.55" dyno= connect= service= status=503 bytes=
2016-05-14T09:43:57.833280+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/123" host=eh-timestamp-microservice.herokuapp.com request_id=4a33ecea-5813-4c8d-9a21-a1a089170120 fwd="122.171.196.55" dyno= connect= service= status=503 bytes=
2016-05-14T09:43:58.247554+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=eh-timestamp-microservice.herokuapp.com request_id=1561f774-9d38-4003-b37e-29392bc962ac fwd="122.171.196.55" dyno= connect= service= status=503 bytes=
2016-05-14T09:49:27.982002+00:00 heroku[api]: Release v10 created by [email protected]
2016-05-14T09:49:27.982002+00:00 heroku[api]: Deploy 182e72e by [email protected]
2016-05-14T09:49:28.148769+00:00 heroku[slug-compiler]: Slug compilation started
2016-05-14T09:49:28.148779+00:00 heroku[slug-compiler]: Slug compilation finished
2016-05-14T09:49:28.171518+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-14T09:49:29.761171+00:00 heroku[web.1]: Starting process with command `node index.js`
2016-05-14T09:49:31.808646+00:00 app[web.1]: /app/node_modules/express/node_modules/serve-static/index.js:47
2016-05-14T09:49:31.808665+00:00 app[web.1]:   var opts = Object.create(options || null)
2016-05-14T09:49:31.808666+00:00 app[web.1]:                     ^
2016-05-14T09:49:31.808668+00:00 app[web.1]: TypeError: Object prototype may only be an Object or null: index.html
2016-05-14T09:49:31.808667+00:00 app[web.1]:
2016-05-14T09:49:31.808669+00:00 app[web.1]:     at Function.create (native)
2016-05-14T09:49:31.808669+00:00 app[web.1]:     at Function.serveStatic [as static] (/app/node_modules/express/node_modules/serve-static/index.js:47:21)
2016-05-14T09:49:31.808670+00:00 app[web.1]:     at Object.<anonymous> (/app/index.js:23:23)
2016-05-14T09:49:31.808670+00:00 app[web.1]:     at Module._compile (module.js:409:26)
2016-05-14T09:49:31.808671+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:416:10)
2016-05-14T09:49:31.808672+00:00 app[web.1]:     at Module.load (module.js:343:32)
2016-05-14T09:49:31.808672+00:00 app[web.1]:     at Function.Module._load (module.js:300:12)
2016-05-14T09:49:31.808673+00:00 app[web.1]:     at Function.Module.runMain (module.js:441:10)
2016-05-14T09:49:31.808673+00:00 app[web.1]:     at startup (node.js:139:18)
2016-05-14T09:49:31.808674+00:00 app[web.1]:     at node.js:968:3
2016-05-14T09:49:32.501619+00:00 heroku[web.1]: Process exited with status 1
2016-05-14T09:49:32.536377+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-14T09:49:38.856013+00:00 heroku[slug-compiler]: Slug compilation started
2016-05-14T09:49:38.856024+00:00 heroku[slug-compiler]: Slug compilation finished
2016-05-14T09:49:38.704760+00:00 heroku[api]: Deploy 182e72e by [email protected]
2016-05-14T09:49:38.704788+00:00 heroku[api]: Release v11 created by [email protected]
2016-05-14T09:49:38.918627+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-14T09:49:39.993466+00:00 heroku[web.1]: Starting process with command `node index.js`
2016-05-14T09:49:42.145320+00:00 app[web.1]: /app/node_modules/express/node_modules/serve-static/index.js:47
2016-05-14T09:49:42.145342+00:00 app[web.1]:   var opts = Object.create(options || null)
2016-05-14T09:49:42.145344+00:00 app[web.1]:                     ^
2016-05-14T09:49:42.145345+00:00 app[web.1]:
2016-05-14T09:49:42.145346+00:00 app[web.1]: TypeError: Object prototype may only be an Object or null: index.html
2016-05-14T09:49:42.145346+00:00 app[web.1]:     at Function.create (native)
2016-05-14T09:49:42.145347+00:00 app[web.1]:     at Function.serveStatic [as static] (/app/node_modules/express/node_modules/serve-static/index.js:47:21)
2016-05-14T09:49:42.145348+00:00 app[web.1]:     at Object.<anonymous> (/app/index.js:23:23)
2016-05-14T09:49:42.145348+00:00 app[web.1]:     at Module._compile (module.js:409:26)
2016-05-14T09:49:42.145349+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:416:10)
2016-05-14T09:49:42.145350+00:00 app[web.1]:     at Module.load (module.js:343:32)
2016-05-14T09:49:42.145350+00:00 app[web.1]:     at Function.Module._load (module.js:300:12)
2016-05-14T09:49:42.145351+00:00 app[web.1]:     at Function.Module.runMain (module.js:441:10)
2016-05-14T09:49:42.145352+00:00 app[web.1]:     at startup (node.js:139:18)
2016-05-14T09:49:42.145352+00:00 app[web.1]:     at node.js:968:3
2016-05-14T09:49:42.929388+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-14T09:49:42.909282+00:00 heroku[web.1]: Process exited with status 1
2016-05-14T09:50:05.626329+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=eh-timestamp-microservice.herokuapp.com request_id=cdee94cc-a0bf-4907-b442-1e72a09d1e20 fwd="163.47.236.3" dyno= connect= service= status=503 bytes=
2016-05-14T09:50:07.477549+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=eh-timestamp-microservice.herokuapp.com request_id=88cbbbca-5afc-4740-a934-751718040503 fwd="163.47.236.3" dyno= connect= service= status=503 bytes=
2016-05-14T09:55:36.623731+00:00 heroku[web.1]: State changed from crashed to starting
2016-05-14T09:55:37.903604+00:00 heroku[web.1]: Starting process with command `node index.js`
2016-05-14T09:55:39.780790+00:00 app[web.1]: /app/node_modules/express/node_modules/serve-static/index.js:47
2016-05-14T09:55:39.780809+00:00 app[web.1]:   var opts = Object.create(options || null)
2016-05-14T09:55:39.780810+00:00 app[web.1]:                     ^
2016-05-14T09:55:39.780810+00:00 app[web.1]:
2016-05-14T09:55:39.780811+00:00 app[web.1]: TypeError: Object prototype may only be an Object or null: index.html
2016-05-14T09:55:39.780811+00:00 app[web.1]:     at Function.create (native)
2016-05-14T09:55:39.780812+00:00 app[web.1]:     at Function.serveStatic [as static] (/app/node_modules/express/node_modules/serve-static/index.js:47:21)
2016-05-14T09:55:39.780812+00:00 app[web.1]:     at Object.<anonymous> (/app/index.js:23:23)
2016-05-14T09:55:39.780813+00:00 app[web.1]:     at Module._compile (module.js:409:26)
2016-05-14T09:55:39.780813+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:416:10)
2016-05-14T09:55:39.780813+00:00 app[web.1]:     at Module.load (module.js:343:32)
2016-05-14T09:55:39.780814+00:00 app[web.1]:     at Function.Module._load (module.js:300:12)
2016-05-14T09:55:39.780814+00:00 app[web.1]:     at Function.Module.runMain (module.js:441:10)
2016-05-14T09:55:39.780814+00:00 app[web.1]:     at startup (node.js:139:18)
2016-05-14T09:55:39.780815+00:00 app[web.1]:     at node.js:968:3
2016-05-14T09:55:40.461214+00:00 heroku[web.1]: State changed from starting to crashed
2016-05-14T09:55:40.440635+00:00 heroku[web.1]: Process exited with status 1
2016-05-14T09:59:58.706941+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=eh-timestamp-microservice.herokuapp.com request_id=9fe4e275-f9e0-49df-bc6f-a90395578d35 fwd="163.47.236.3" dyno= connect= service= status=503 bytes=
2016-05-14T09:59:59.785150+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=eh-timestamp-microservice.herokuapp.com request_id=59101524-ec76-4742-9b6f-77003bf0ab0f fwd="163.47.236.3" dyno= connect= service= status=503 bytes=
2016-05-14T10:00:18.450815+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=eh-timestamp-microservice.herokuapp.com request_id=42c2b2aa-a549-48db-bebd-734f910b2f94 fwd="42.236.50.154" dyno= connect= service= status=503 bytes=
2016-05-14T10:07:05.926172+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/robots.txt" host=eh-timestamp-microservice.herokuapp.com request_id=05d5ab32-ba20-428f-9886-4baae5456bc9 fwd="182.118.35.23" dyno= connect= service= status=503 bytes=

I was wondering how do I get it successfully deployed onto Heroku?

Upvotes: 1

Views: 540

Answers (1)

user4466350
user4466350

Reputation:

static middleware take two arguments, a string which is the root path of the directory to serve, and an option object.

For example

serveStatic('public/ftp', {'index': ['default.html', 'default.htm']})

In your case the second argument is a string, which is not correct.

Upvotes: 2

Related Questions