Одинаковое содержимое в обоих HTML-файлах при отправке файла в nodejs express

#javascript #html #node.js #express #frontend

#javascript #HTML #node.js #экспресс #интерфейс

Вопрос:

Привет, все еще новичок в nodejs и пытаюсь создать простой веб-сайт с двумя страницами. В настоящее время у меня возникают проблемы с тем, что содержимое второго файла отображается как первый, даже если инспектор исходного кода в браузере говорит, что он ищет второй файл.

The server.js выглядит следующим образом:

 const http = require('http');
const express = require('express');
const path = require('path');
const app = express();
app.use(express.json());
app.use(express.static("express"));
// default URL for website
app.use('/', function(req,res){
    res.sendFile(path.join(__dirname '/express/index.html'));
    //__dirname : It will resolve to your project folder.
  });

app.get('/avocado', function(req,res){
    res.sendFile(path.join(__dirname '/express/avocado.html'));
});
const server = http.createServer(app);
const port = 3000;
server.listen(port);
console.debug('Server listening on port '   port);
  

в то время как два других HTML-файла, на которые он указывает в папке «express», в настоящее время имеют только реальный базовый HTML, чтобы попытаться легко отладить.

index.html

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p>I start here</p>
</body>
</html>
  

и avocado.html

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p>I Get to this page fine</p>
</body>
</html>
  

Как уже говорилось, инспектор исходного кода в браузере утверждает, что имеет доступ к обоим, но оба эти ссылки при поиске в / или / avocado скажут «Я начинаю здесь»

Ответ №1:

Вы настроили первый обработчик как промежуточное программное обеспечение с app.use помощью.

Он запускается до достижения маршрута для /avocado , поэтому всегда будет отвечать индексным файлом.

Используйте app.get для конечной точки. Используйте только app.use для промежуточного программного обеспечения.

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

1. Я вижу! Спасибо, я изменил get для обоих, и теперь он работает нормально