#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 для обоих, и теперь он работает нормально