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

时间:2016-09-14 22:55:24

标签: node.js http express redis

这是我的代码:

sound1

这是我运行文件时的输出($ node test.js): 我在我的ubuntu机器上试过这个,它完美无缺。这就是我的mac。有人可以解释我为什么会这样。任何帮助将不胜感激。

listening
increment value: 2
_http_server.js:192
    throw new RangeError(`Invalid status code: ${statusCode}`);
    ^

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

1 个答案:

答案 0 :(得分:3)

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

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

- (Atype*)makeAtypeWithBtype:(nullable BType*)btype { Atype* _Nullable a = [btype makeAtype]; if (a) { // All good here. return NONNUL_CAST(a); } else { // a appeared as nil. Some fallback is needed. [self reportError]; return [AtypeFactory makeDeafult]; } }

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

哪个不好..所以要修复它只需使用

res.sendStatus(reply);

同时检查一下。

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

这个

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

修改

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

res.sendStatus(reply ? 200 : 500);

res.json({thisIsMyNumber: reply});

希望这有帮助。