izoo123
izoo123

Reputation: 47

Express app.get middleware not working `SyntaxError: Unexpected end of input`

I'm following a tutorial on Express on Youtube. Unfortunately i've run into a issue with middleware, and am very confused.

In my main file I have the code:

const express = require('express');
const path = require('path');
const app = express();
const logger = require('./middleware/logger');

app.use('/api/members', require('./routes/api/members'));

const PORT = process.env.PORT || 5000;

app.listen(PORT, () => console.log(`Server started on port ${PORT}`));

and the members.js file is:

const express = require('express');
const router = express.Router();
const members = require('../../Members')

//Gets All Members
router.get('/', (req, res) => res.json(members));

//Get Single Memberss
router.get('/:id', (req, res) => {
  const found = members.some(member => member.id === parseInt(req.params.id));

  if(found){
    res.json(members.filter(member => member.id === parseInt(req.params.id)));
  } else {
    res.status(400).json({msg: `No member with the id of ${req.params.id}`});
  }

module.exports = router;

This code causes nodemon to crash and give the following error:

SyntaxError: Unexpected end of input
    at wrapSafe (internal/modules/cjs/loader.js:1072:16)
    at Module._compile (internal/modules/cjs/loader.js:1122:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178
:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Module.require (internal/modules/cjs/loader.js:1044:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (/home/gavin/Documents/ExpressCrashCourse/index
.js:12:25)
    at Module._compile (internal/modules/cjs/loader.js:1158:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178
:10)

My interpretation is that it is breaking at app.use('/api/members', require('./routes/api/members')); but I dont really understand why. Also in the app.use function above I dont really understand what the second argument is doing. I would think that it would be an instance of the Router object in express but I dont understand how that is a replacement for the usual function(req,res){} that would be in its place. Anyways, i've looked over it several times and it looks like ive copied the code from the tutorial exactly as its written so im really confused as to why this isnt working. Any help is very appreciated.

Upvotes: 0

Views: 510

Answers (1)

mwilson
mwilson

Reputation: 12970

Looks like you are missing a closing curly brace } and parenthesis )

const express = require('express');
const router = express.Router();
const members = require('../../Members')

//Gets All Members
router.get('/', (req, res) => res.json(members));

//Get Single Memberss
router.get('/:id', (req, res) => {
    const found = members.some(member => member.id === parseInt(req.params.id));

    if (found) {
        res.json(members.filter(member => member.id === parseInt(req.params.id)));
    } else {
        res.status(400).json({msg: `No member with the id of ${req.params.id}`});
    }
}); // <- Close your callback
module.exports = router;

Upvotes: 1

Related Questions