Express app.get middleware не работает `SyntaxError: Неожиданный конец ввода` - PullRequest
0 голосов
/ 06 марта 2020

Я следую учебному пособию по Express на Youtube. К сожалению, я столкнулся с проблемой промежуточного программного обеспечения и очень запутался.

В моем основном файле у меня есть код:

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}`));

и члены. js Файл:

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;

Этот код заставляет nodemon взломать sh и выдайте следующую ошибку:

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)

Моя интерпретация заключается в том, что она ломается при app.use('/api/members', require('./routes/api/members'));, но я не совсем понимаю, почему. Также в приведенной выше функции app.use я не совсем понимаю, что делает второй аргумент. Я бы подумал, что это будет экземпляр объекта Router в express, но я не понимаю, как это заменить обычную функцию (req, res) {}, которая была бы на ее месте. В любом случае, я просмотрел его несколько раз, и похоже, что я скопировал код из учебника точно так, как он написан, так что я действительно растерялся относительно того, почему это не работает. Любая помощь очень ценится.

1 Ответ

1 голос
/ 06 марта 2020

Похоже, вам не хватает закрывающей фигурной скобки } и скобок )

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...