当前位置: 首页 > 面试题库 >

_http_server.js:192抛出新的RangeError(`无效状态码:$ {statusCode}`);

公良飞尘
2023-03-14
问题内容

这是我的代码:

var express = require('express');
var http = require('http');
var redis = require('redis');
var url = require('url');
var client = redis.createClient().setMaxListeners(0);

var app = express();
app.set('port', 3000);

app.get('/*', function(req, res) {
  var key = url.parse(req.url).pathname;
  client.on('connect', function() {
    console.log('connected to redis!');
  });
  client.get(key, function(err, reply) {
    if( reply == null) {
      client.set(key, 1);
      client.expire(key, 300);
      res.send('1');
    }
    else {
      client.incr(key, function(err, reply) {
        console.log('increment value: ' + reply);
        res.sendStatus(reply);
      });
    }
  });

});


http.createServer(app).listen(app.get('port'), function() {
  console.log('listening');
});

这是我运行文件($ node
test.js)时的输出:我在ubuntu机器上尝试了此操作,它运行良好。这就是我在Mac上获得的。有人可以解释一下为什么会这样。任何帮助,将不胜感激。

倾听
增量值:2
_http_server.js:192
    抛出新的RangeError(`无效状态代码:$ {statusCode}`);
    ^

RangeError:无效的状态码:2
    在ServerResponse.writeHead(_http_server.js:192:11)
    在ServerResponse._implicitHeader(_http_server.js:157:8)
    在ServerResponse.OutgoingMessage.end(_http_outgoing.js:559:10)
    在ServerResponse.send(/Users/sharath/webapps/docker/node_modules/express/lib/response.js:209:10)
    在ServerResponse.sendStatus(/Users/sharath/webapps/docker/node_modules/express/lib/response.js:346:15)
    在Command.callback(/Users/sharath/webapps/docker/test.js:24:13)
    在normal_reply(/Users/sharath/webapps/docker/node_modules/redis/index.js:714:21)
    在RedisClient.return_reply(/Users/sharath/webapps/docker/node_modules/redis/index.js:816:9)
    在JavascriptRedisParser.returnReply(/Users/sharath/webapps/docker/node_modules/redis/index.js:188:18)
    在JavascriptRedisParser.execute(/Users/sharath/webapps/docker/node_modules/redis-parser/lib/parser.js:415:12)

问题答案:

Http响应状态应为整数。它不能是字符串,对象,数组等,并且应从100开始。

从您的代码中,我看到您尝试做

res.sendStatus(reply);

检查回复变量。从redis incr响应中,我认为它是字符串“ OK”。

哪一个不好。所以要修复它,只需使用

res.sendStatus(reply ? 200 : 500);

还要检查一下。

http://expressjs.com/en/4x/api.html#res.sendStatus

还有这个

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

编辑

如果您需要将一些JSON或数据发送到前端,只需执行以下操作

res.json({thisIsMyNumber: reply});

要么

res.send({thisIsMyNumber: reply});

希望这可以帮助。



 类似资料:
  • 问题内容: 我遇到一个问题,在此应用程序上尝试POST请求时收到以下错误代码(请记住我是初学者node.js / js程序员): 错误: app.js: 以下是我的edit.js路由,我认为是发生问题的地方: 问题答案: 我刚才有一个类似的错误消息,并设法通过更改解决了该问题: 至: 要不就: 也就是说,请确保您未尝试在某处设置无效的HTTP状态代码。 这可能是问题所在,但看起来您不小心复制了代码

  • 我试图将spring securtiy saml集成作为一个SP与adfs系统实现,我的头撞了好几天,在成功验证后,当SAMLResponnse从adfs发回时,会发生这种异常,并引发以下异常。这是调试日志: 我一直在讨论一些问题,所以: 组织。opensaml。常见的SAMLException:Response的状态代码urn:oasis:names:tc:SAML:2.0:status:Res

  • 我为这个错误而发疯。。尝试了所有的解决方案,但没有任何效果。我正在显示材质ui日期选择器日历。直到今天,它一直工作得很好。我不知道发生了什么,我没有改变任何代码,甚至是我写的。 RangeError:无效的时间值 代码如下: “新日期()”正在返回 2019年8月16日星期五23:56:25 GMT 0300 有什么建议吗?

  • 在我的工作场所,我们使用放心2.9发送RestAPI请求,我得到了一个包含响应正文和状态代码的有效输出,即使状态代码是500,402。 但是唯一不起作用的情况是错误303。请参阅其他,我得到了方法抛出org.apache.http.client.ClientProtocolException异常,我无法以这种方式解析信息,所有其他状态代码都返回状态代码和正文,只有303抛出异常。API不是问题,因

  • 我的日期选择器在尝试将从API获取的选定日期值设置为字符串值时抛出。 我的API日期字符串是 在反应2.0版本后,datepicker将不支持date作为字符串,它表示使用date-fns parseiso... 添加parseISO后,我仍然得到错误

  • 我有一个,在中,会抛出 在apphost中: 但是当我调用服务时,http状态码是200,不是401,为什么? HTTP/1.1200OK(为什么不是401?) 缓存控制:专用 内容类型:text/html;字符集=utf-8 服务器:Microsoft IIS/7.5 X-AspNet-Version:4.0。30319 X-Powerd-By: ASP. NET 日期:2014年3月14日星期