Я получаю следующую ошибку, когда отправляю текст в форму с одним полем на свой node.js сервер:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:485:11)
at ServerResponse.header (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\express\lib\response.js:771:10)
at ServerResponse.json (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\express\lib\response.js:264:10)
at ServerResponse.send (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\express\lib\response.js:158:21)
at C:\Users\hbhar\Desktop\Basic WebApp\routes\index.js:15:9
at Layer.handle [as handle_request] (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\express\lib\router\route.js:137:13)
at module.exports (C:\Users\hbhar\Desktop\Basic WebApp\routes\index.js:11:5)
at Layer.handle [as handle_request] (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\hbhar\Desktop\Basic WebApp\node_modules\express\lib\router\route.js:137:13)
Хотя маршрутизатор успешно отображает страницу после отправки формы, я могу не отправлять на консоль какие-либо данные или данные журнала. К сожалению, мне не удалось решить проблему, основываясь на ответах на похожие вопросы. Заранее спасибо. Также приветствуются любые предложения ресурсов для заголовков HTTP (кроме MDN).
Мой индекс. js файл (находится в / routes):
const express = require('express');
const router = express.Router();
// Welcome Page
router.get('/', (req, res) => res.render('welcome'));
// After Form Submission
router.get('/submitform', function(req, res, next)
{
res.render('submitform');
next();
}, function(req,res)
{
const formsubmission = req.query;
res.send(formsubmission);
console.log(formsubmission);
}
);
module.exports = router;
Используемый файл для запуска npm (обычно называется app. js):
const express = require('express');
const path = require('path');
const webapp = express();
const expressLayouts = require('express-ejs-layouts');
webapp.use(expressLayouts);
webapp.set('view engine', 'ejs');
// Body Parser Middleware
webapp.use(express.json());
webapp.use(express.urlencoded({ extended: false }));
// Routing to default directory
webapp.use('/', require('./routes/index'));
// Link folder for static files
webapp.use(express.static(path.join(__dirname, 'public')));
const PORT = process.env.PORT || 3000;
webapp.listen(PORT, () => console.log(`Server started on port ${PORT}`));