Почему rs.send показывает ошибку, основанную на вводе строки внутри него? - PullRequest
0 голосов
/ 19 марта 2020

Я новичок в узле и express и просто пытался создать форму HTML, которая принимает два числа и отображает результат, используя "express" и "узел". Когда я пишу rs.send(result), я получаю следующую ошибку

enter image description here

Это также отображается, когда мой браузер отображается, когда я нажимаю кнопку вычисления. Странно Invalid status code: 2 показанный на картинке мой ответ на расчет. Это сообщение не отображается, когда я набираю rs.send("The answer is" + result), и все идет гладко.

Мой вопрос, почему это происходит и в чем причина этого?

Это мой полный код: -

const express = require('express')
const app = express()
const port = 3000
app.use(express.urlencoded({extended: true}));

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

app.post("/", function(req, res){
  var num1 =Number(req.body.num1);
  var num2 = Number(req.body.num2);
  var result = num1+num2;
  res.send(result);
})

app.get('/bmicalculator', function(req, res){
  res.sendFile(__dirname + "/bmiCalculator.html");
});

app.post("/bmicalculator", function(req, res){
  var num1 =Number(req.body.height);
  var num2 = Number(req.body.weight);
  var result = num1+num2;
  res.send(result);
})



app.listen(port);

PS: - Игнорировать калькулятор ИМТ, он делает простое дополнение.

1 Ответ

0 голосов
/ 19 марта 2020

res.send(data) хочет, чтобы data, который вы передаете, был одним из следующих:

String
Object
Buffer
Array

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

Итак, мораль этой истории состоит в том, чтобы передать res.send() тип данных, который он хочет, в порядке функционировать должным образом. Если вы хотите передать число, то перед вызовом res.send() преобразуйте его в строку. Имейте в виду, что ответ http все равно отправляется как строковые данные, поэтому где-то вдоль строки ваш номер все равно должен быть преобразован в строку.

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