экспресс-маршрутизатор router.get(‘/страница’) не работает

#javascript #node.js #express #routes #netlify

#javascript #node.js #экспресс #маршруты #netlify

Вопрос:

Я пытаюсь создать простую экспресс-маршрутизацию и использую ванильный HTML для интерфейса.

index.js

 const express    = require('express'),
      bodyParser = require('body-parser'),
      serverless = require('serverless-http'),
      app        = express(),
      nav        = require('./routes/nav'), // the router 
      PORT       = process.env.PORT || 8080;

/* Settings */

app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static('./public'));

/* APIS */
app.use('/.netlify/functions/api', nav); //Navigation API

module.exports = app;
module.exports.handler = serverless(app);

if(process.env.NODE_ENV === "development"){
  app.listen(PORT, () => {
    console.log(`Server is runing on PORT: ${PORT} ENV: ${process.env.NODE_ENV}`);
  });
}

  

nav.js

 const express    = require('express');

const router     = express.Router();
const PATH       = "../../public/";

router.get('/', (req, res) => {
  res.render(`${PATH}index.html`)
});

router.get('/graph', (req, res) => {
  res.render(`${PATH}pages/graph.html`)
})


module.exports = router;
  

каждый раз, когда я пытаюсь выполнить маршрутизацию с помощью тега, он сообщает мне «Не удается получить / график»

мой HTML-навигатор

 <ul class="navbar-nav mr-auto">
          <li class="nav-item"><a class="nav-link" href="/">Home</a></li>
          <li class="nav-item mr-auto"><a class="nav-link" href="/graph">Graph Algorithims</a></li>
          <li class="nav-item"><a class="nav-link" href="/sort">Sorting Algorithims</a></li>
</ul>
      
  

Я думал, что проблема может быть на локальном сервере, и я попытался развернуть netlify, чтобы посмотреть, работает ли он там, и возникает та же проблема.

Ответ №1:

Читая ваш код, я, кажется, не вижу, где вы «подключаете» router.js файл в ваш index.js .

Чтобы исправить это, добавьте следующее в index.js:

 const router = require('path/to/router.js');
app.use(router);
  

Комментарии:

1. Вы зарегистрировали навигационный файл в точке API '/.netlify/functions/api' , что делает его таким, что вам придется перейти к localhost:PORT/.netlify/functions/api/graph , чтобы увидеть свой API. Это работает? Я не знаю, какое отношение к этому имеет netlify, но я бы на вашем месте просто подключил nav к '/' , поскольку здесь нет других маршрутов.