пишет хедеры отправлены не могу понять где
вот ошибка:
listening on port 3000 node:_http_outgoing:573 throw new ERR_HTTP_HEADERS_SENT('set'); ^ Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client at new NodeError (node:internal/errors:329:5) at ServerResponse.setHeader (node:_http_outgoing:573:11) at ServerResponse.header (C:\OpenServer\domains\mysite.local\node_modules\e xpress\lib\response.js:771:10) at ServerResponse.send (C:\OpenServer\domains\mysite.local\node_modules\e xpress\lib\response.js:170:12) at C:\OpenServer\domains\mysite.local\app.js:160:13 at C:\OpenServer\domains\mysite.local\node_modules\ex press-fileupload\lib\utilities.js:56:57 at WriteStream.<anonymous> (C:\OpenServer\domains\mysite.local\node_modules\e xpress-fileupload\lib\utilities.js:181:29) at WriteStream.emit (node:events:369:20) at emitCloseNT (node:internal/streams/destroy:169:10) at emitErrorCloseNT (node:internal/streams/destroy:154:3) { code: 'ERR_HTTP_HEADERS_SENT' } вот app [JS]var express = require('express'); var mysql = require('mysql'); const fileUpload = require('express-fileupload'); var app = express(); const bodyParser = require("body-parser"); cookies = require('cookie-parser'); app.use(cookies()); app.use(fileUpload()); /// /// Create connection to MySQL database server. /// function getMySQLConnection() { return mysql.createConnection({ host : 'localhost', user : 'mysql', password : 'mysql', database : 'elektronika' }); } const urlencodedParser = bodyParser.urlencoded({extended: false}); app.set('view engine', 'ejs'); /// app.use('/input', express.static(__dirname + '/files/sphoto/')); app.use('/smart', express.static(__dirname + '/files/sphoto/')); app.get('/addtocookie/:param', function(req, res){ if(req.params.param=='vprodaj'){ if(req.cookies.vprodaj=''){ res.cookie('vprodaj', 'checked'); res.send(); }else{ res.cookies('vprodaj', ''); res.send(); } }else if(req.params.param=='soskidkoi'){ if(req.cookies.soskidkoi=''){ res.cookies('soskidkoi', 'checked'); res.send(); }else{ res.cookise('soskidkoi', ''); res.send(); } }else if(req.params.param=='dbesplat'){ if(req.cookies.dbesplat=''){ res.cookies('dbesplat', 'checked'); res.send(); }else{ res.cookies('dbesplat', ''); res.send(); } }else if(req.params.param=='promokodi'){ if(req.cookies.promokodi=''){ res.cookie('promokodi', 'checked'); res.send(); }else{ res.cookies('promokodi', ''); res.send(); } }else if(req.params.param=='presents'){ if(req.cookies.presents=''){ res.cookies('presents', 'checked'); res.send(); }else{ res.cookies('presents', ''); res.send(); } }else if(req.params.param=='newtov'){ if(req.cookies.newtov=''){ res.cookies('newtov', 'checked'); res.send(); }else{ res.cookies('newtov', ''); res.send(); } }else if(req.params.param=='uctov'){ if(req.cookies.uctov=''){ res.cookies('uctov', 'checked'); res.send(); }else{ res.cookies('uctov', ''); res.send(); } }else if(req.params.param=='garantprod'){ if(req.cookies.garantprod=''){ res.cookies('garantprod', 'checked'); res.send(); }else{ res.cookies('garantprod', ''); res.send(); } }else if(req.params.param=='checked'){ if(req.cookies.checked=''){ res.cookies('vpcheckedrodaj', 'checked'); res.send(); }else{ res.cookies('checked', ''); res.send(); } }else if(req.params.param=='oswin'){ if(req.cookies.oswin=''){ res.cookies('oswin', 'checked'); res.send(); }else{ res.cookies('oswin', ''); res.send(); } }else if(req.params.param=='osios'){ if(req.cookies.osios=''){ res.cookies('osios', 'checked'); res.send(); }else{ res.cookies('osios', ''); res.send(); } }else if(req.params.param=='osandrod'){ if(req.cookies.osandrod=''){ res.cookies('osandrod', 'checked'); res.send(); }else{ res.cookies('osandrod', ''); res.send(); } }else if(req.params.param=='side'){ if((req.cookies.side=='') || (req.cookies.side=='DESK')){ res.cookies('side', 'ASK'); res.send(); }else{ res.cookies('side', 'DESK'); res.send(); } } }); /// To get collection of person saved in MySQL database. /// ///////////////////////inp////////// app.get("/input", urlencodedParser, function (request, response) { response.render('input'); }); app.post("/input", urlencodedParser, function (request, response) { var alphabet = "abcdefghijklmnopqrstuvwxyz"; var randomIndex = Math.floor(Math.random() * alphabet.length); if (!request.files || Object.keys(request.files).length === 0) { return response.status(400).send('No files were uploaded.'); } // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file let sampleFile = request.files.photo; var photon=__dirname+'/files/sphoto/'+randomIndex+request.files.photo.name; // Use the mv() method to place the file somewhere on your server sampleFile.mv((__dirname+'/files/sphoto/' + photon), function(err) { if (err) return response.status(500).send(err); response.send('File uploaded!'); }); //////////////////////////////////// if(!request.body) return response.sendStatus(400); const bodyParser = require("body-parser"); var connection = getMySQLConnection(); connection.connect(function(err) { if (err) throw err; console.log("Connected!"); var sql = "INSERT INTO `smartphone` (`id`,`prod`,`name`,`sim`,`razresh`,`acum`,`proc`,`oper`,`sd`,`cam`,`gps`,`description`,`giroscope`,`payment`,`photo`,`price`,`sale`,`dbesplat`,`promokodi`, `presents`,`garantprod`) VALUES (?)"; var values = ['NULL',request.body.prod,request.body.name,request.body.sim,request.body.display,request.body.acum,request.body.proc,request.body.oper,request.body.sd,request.body.cam,request.body.gps,request.body.description,request.body.giroscope,request.body.payment,photon,request.body.price,request.body.sale,request.body.dbesplat,request.body.promokodi, request.body.presents,request.body.garantprods]; connection.query(sql, [values], function (err, result) { if (err){ throw err; } }); }); });app.listen(3000, function () { console.log('listening on port', 3000); });[/JS] |
вот вью
<html> <head> <title> input </title> <link rel="stylesheet" href="style.css"> <link rel="stylesheet" href="bootstrap.css"> </head> <body> <form enctype='multipart/form-data' method="post"> <table> <tr> <td> <p>Производитель</p> </td> <td> <input type="text" name="prod"> </td> </tr><tr> <td> <p>Модель</p> </td> <td> <input type="text" name="name"> </td> </tr><tr> <td> <p>Количество СИМ карт</p> </td> <td> <input type="text" name="sim"> </td> </tr><tr> <td> <p>Дисплей</p> </td> <td> <input type="text" name="dis"> </td> </tr><tr> <td> <p>Разрешение дисплея</p> </td> <td> <input type="text" name="razresh"> </td> </tr><tr> <td> <p>Аккумулятор</p> </td> <td> <input type="text" name="acum"> </td> </tr><tr> <td> <p>Процессор</p> </td> <td> <input type="text" name="proc"> </td> </tr><tr> <td> <p>Оперативная память</p> </td> <td> <input type="text" name="oper"> </td> </tr><tr> <td> <p>Поддержка SD</p> </td> <td> <input type="text" name="sd"> </td> </tr><tr> <td> <p>Камеры</p> </td> <td> <input type="text" name="cam"> </td> </tr><tr> <td> <p>Датчик GPS</p> </td> <td> <input type="text" name="gps"> </tr><tr> <td> <p>Описание</p> </td> <td> <textarea name="description" rows="10" cols="40"></textarea> </td> </tr> <tr> <td> <p>Датчик гироскоп</p> </td> <td> <input type="text" name="giroscope"> </tr> <tr> <td> <p>Безконтактная оплата</p> </td> <td> <input type="text" name="payment"></td> </tr> <tr> <td> <p>Фото</p> </td> <td> <input type="file" name="photo"></td> </tr> <tr> <td> <p>Цена</p> </td> <td> <input type="text" name="price"></td> </tr> <tr> <td> <p>sale</p> </td> <td> <input type="text" name="sale"></td> </tr><tr> <td> <p>dbesplat</p> </td> <td> <input type="text" name="dbesplat"></td> </tr><tr> <td> <p>promokodi</p> </td> <td> <input type="text" name="promokodi"></td> </tr><tr> <td> <p>presents</p> </td> <td> <input type="text" name="presents"></td> </tr><tr> <td> <p>garantprod</p> </td> <td> <input type="text" name="garantprod"></td> </tr> <tr> <td> </td> <td> <input type="submit" id="subm"> </td> </tr> </table> </form> </body> </html> |
Часовой пояс GMT +3, время: 02:52. |