0

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.

1 Answer 1

1

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;
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks! It always ends up just being something simple like this.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.