Невозможно получить / foo при использовании express.Router () - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь выяснить, почему маршрутизация не работает, если я использую expressjs, у меня есть этот код:

const express = require('express');
const app = express();
const router = express.Router();

app.get('/foo', function (req, res) {
    res.send('Hello World.')
});

приведенный выше код работает хорошо, но если я заменю маршрутс этим:

router.get('/foo', function(req, res, next) {
    res.send('This is api.')
});

Я получаю:

Невозможно получить / foo при использовании express.Router ()

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Вам необходимо правильно настроить каждый маршрутизатор, чтобы использовать его в Express.

В файле корневого сервера (index.js / app.js) вам необходимо зарегистрировать маршрутизатор в приложении.Например:

const express = require("express");
const app = express();

const fooRouter = require("./routes/foo");
app.use("/foo", fooRouter);

Затем в routes/foo.js вы можете использовать свой код, как и раньше («но учтите, что пути маршрута будут относительно "/foo" в этой точке), но вам также необходимо экспортироватьмаршрутизатор. Например:

const express = require("express");
const router = express.Router();

router.get("/bar", (req, res) => {
    // ...
});

module.exports = router;

Где конечный маршрут будет "/foo/bar". Для всего "/foo" вы можете определить обработчик для "/" в foo.js.

0 голосов
/ 04 марта 2019

Вам не хватает следующего: app.use(router); Внизу вашего кода.Вам также понадобится app.listen(3000); или любой другой порт, на котором вы хотите запустить приложение.

Полный пример:

const express = require('express');
const app = express();
const router = express.Router();

router.get('/foo', function (req, res, next) {
    res.send('This is api.')
});

app.use(router);
app.listen(3000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...