Узел JS: получение ошибки Cannot GET / route при использовании метода get - PullRequest
0 голосов
/ 11 июня 2019

Когда я использую метод «use», мой код работает нормально, но когда я использую «get», он выдает ошибку: «Cannot GET /route1".

Мой код:

const express = require('express');
const app = express();
const expbs = require('express-handlebars');
const path = require('path');

const routes = require('./routes/handlers');

app.use(express.static('public'));

const hbs = expbs.create({
    defaultLayout: 'main',
    layoutsDir: path.join(__dirname, 'views/mainLayout'),
    partialsDir: path.join(__dirname, 'views/pieces'),
});

app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');

app.get('/route1', routes);

app.listen(8080, () => {
    console.log('Server is starting at port ', 8080);
});

Я новичок в узле js, скажите, пожалуйста, могу ли я определить маршруты с помощью метода "get".

Ответы [ 3 ]

2 голосов
/ 11 июня 2019

Я думаю, что ваши маршруты / обработчики.js выглядят примерно так

var express = require('express');
var router = express.Router();

function greetUser(req, res){
    res.send("Welcome dear user");
}
router.get("/", greetUser);
router.post("/", (req, res)=>{ res.send("user registered") });

module.exports = router

Проблема здесь в том, что эта последняя строка, этот экспортируемый объект роутера отлично работает для промежуточного программного обеспечения app.use, в то время как .get or .post expects 2nd parameter to be a function

Если вы экспортируете эту функцию greetUser также с вашего маршрутизатора или получаете эту функцию из любого места, она должна начать нормально работать. Практически это будет

app.get("/route1", (req, res)=>{ res.send({status : true, message : "sample JSON"})})
0 голосов
/ 11 июня 2019

app.get ('/ route1', маршруты);

woulde be app.use ('/ route1', маршруты);

0 голосов
/ 11 июня 2019

Если вы используете маршрутизатор, вы не можете использовать метод get.

Вот документы .

Только обработчик имеет доступ к методу get. app.use добавит путь к API-маршруту, который нужно получить, опубликовать и т. Д.

Вы можете только явно определить получение как отдельный маршрут получения.

app.get('/route1', (req, res) => {
   res.send("You have hit route1 - get");
});

При использовании маршрутизатора вы можете включить объект маршрутизатора только в качестве параметра в app.use(path, routerObj) метод .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...