【问题标题】:Can't use the Number() function in my express.js server - RangeError [duplicate]无法在我的 express.js 服务器中使用 Number() 函数 - RangeError [重复]
【发布时间】:2020-10-07 17:43:35
【问题描述】:

我有以下 HTML 表单:

<form class="" action="/" method="post">
      <input type="text" name="num1" placeholder="First Number">
      <input type="text" name="num2" placeholder="Second Number">
      <button type="submit" name="submit">Calculate</button>
    </form>

我想要做的是获取两个输入的数字并发布它们的总和。 在我的 express.js 服务器中,我包含了 body-parser 包,当我编写以下路由时:

  app.post("/", function(req,res) {

  var num1 = Number(req.body.num1);
  var num2 = Number(req.body.num2);

  res.send(num1+num2);

})

按下提交按钮后,我得到以下错误显示:

RangeError [ERR_HTTP_INVALID_STATUS_CODE]:无效状态代码:5

我也尝试使用 parseInt() 函数,但它显示相同的错误。

这个错误是什么意思?我该如何解决?

【问题讨论】:

  • req.body.num1req.body.num2 收到什么?
  • 另外,您的错误似乎与 Number 的使用无关 - 它声称 状态代码 不正确,它是 5。这不是一个有效的状态代码,这就是您得到的错误所说的。您在某处更改响应的状态代码。
  • 你确定你没有在做res.status(num1+num2)吗?考虑到错误消息,这将更有意义。
  • res.send([body]) 无法接收数字作为参数:see doc
  • express 4.x 将res.send(&lt;number&gt;) 视为res.send(status, body) (source)。 5.x (Source) 改变了这种行为

标签: javascript node.js express node-modules


【解决方案1】:

尝试将返回值转换为字符串。

res.send(String(num1 + num2));

【讨论】:

    【解决方案2】:

    根据文档 http://expressjs.com/en/api.html#res.send res.send 需要 Buffer 对象、字符串、对象、布尔值或数组

    假设你已经配置了body-parser,你可以使用

    res.send([num1 + num2])得到结果

    【讨论】:

      猜你喜欢
      • 2021-02-04
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 2016-02-11
      • 2017-06-25
      • 2014-02-09
      • 2019-01-31
      相关资源
      最近更新 更多