Не могу использовать parseInt () в LocalHost NodeJS - Body Parser - PullRequest
0 голосов
/ 02 апреля 2020

я действительно новый в node js, поэтому я получил эту ошибку при использовании parseInt или Number () на моем сервере

код:

const express = require("express");
const app = express();
const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: true }));

app.get("/bmicalculator", function(req, res) {
    res.sendfile(__dirname + "/index.html");
});

app.post("/bmicalculator", function(req, res) {
    var nm1 = parseInt(req.body.num1); // <-- here the error
    var nm2 = parseInt(req.body.num2); // <-- here the error
    var result = nm1 + nm2 * nm2;
    res.send(result);
});

app.listen(3000, function() {
    console.log("server started");
});

здесь ошибка из браузера и терминала:

RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: 29636
    at ServerResponse.writeHead (_http_server.js:248:11)
    at ServerResponse._implicitHeader (_http_server.js:239:8)
    at ServerResponse.end (_http_outgoing.js:763:10)
    at ServerResponse.send (C:\Users\Amir\Desktop\Calculator\node_modules\express\lib\response.js:221:10)   
    at C:\Users\Amir\Desktop\Calculator\calculator.js:16:9
    at Layer.handle [as handle_request] (C:\Users\Amir\Desktop\Calculator\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\Amir\Desktop\Calculator\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\Amir\Desktop\Calculator\node_modules\express\lib\router\route.js:112:3)     
    at Layer.handle [as handle_request] (C:\Users\Amir\Desktop\Calculator\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\Amir\Desktop\Calculator\node_modules\express\lib\router\index.js:281:22

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Эта ошибка, кажется, вызвана методом res.send. В старой версии Express (v3) первым аргументом был код состояния http, но в вашем случае это большое число (недопустимый код состояния http), поэтому выдается ошибка.

по порядку чтобы исправить это, вы можете сделать

  • обновление до более новой версии express.
  • вместо этого сделать res.send(200, result).

См. Express v3 документы здесь для справки: https://expressjs.com/en/3x/api.html#res .send

res.send([body|status], [body])
Send a response.

res.send(Buffer.from('whoop'))
res.send({ some: 'json' })
res.send('<p>some html</p>')
res.send(404, 'Sorry, we cannot find that!')
res.send(500, { error: 'something blew up' })
res.send(200)

Вы можете видеть, что ваш случай такой же, как в предыдущем примере, но ваш первый аргумент - большое число 29636 , который является недействительным кодом состояния.

0 голосов
/ 02 апреля 2020

Добавить:

app.use(bodyParser.json());

И изменить ответ на:

res.send(200, result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...