【问题标题】:RangeError: Invalid status code: 0, NodeJS ZeroMQRangeError:无效状态代码:0,NodeJS ZeroMQ
【发布时间】:2017-03-15 04:40:33
【问题描述】:

我正在开发一个简单的节点 api/server,它使用 websockets,特别是 ZeroMQ。但是,在发送/请求数据时,我收到以下错误:

RangeError:无效状态代码:0
  在 ServerResponse.writeHead (_http_server.js:192:11)

   var express = require('express');
var app = express();
var bodyParser = require("body-parser");
var server_port = "3000";

/** app settings **/
var zeromq = require("zeromq");
var socket = zeromq.socket("req");/* sends request */
var protocol = "tcp://";
var ip = "192.000.0.000"; //server
var socket_port = "9998";
var url = protocol + ip + ":" + socket_port;


app.use(bodyParser());

/** paths **/
app.post('/request', function (request, response) {
    var command = request.body;

    //connect to port
    socket.connect(url, function (error) {
        if (error) {
            console.log("connection error : ", error);
            process.exit(0);
        }
    });

    //response to front end
    socket.send(JSON.stringify(command));

    //recieve request
    socket.on('message', function (message) {

        //output message to console
        console.log("Recieved message @ : " + (new Date().toDateString()) + " : " + message.toString());

        //send response
        response.setHeader('Content-Type', 'text/plain');
        response.setHeader('Access-Control-Allow-Origin', 'http://localhost:8888');
        response.status(200).send(message);
    });

});


/** start app **/
app.listen(server_port);

console.log("Server started on port: " + server_port);

代码更新: 现在我得到:

错误:发送后无法设置标题。 在 ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:356:11)

【问题讨论】:

    标签: javascript node.js websocket zeromq


    【解决方案1】:

    我猜你正在发送状态 0。尝试使用

    res.status(200).send(<body>);
    

    【讨论】:

    • 嗨,Skabbi,我已经尝试过该解决方案,但是我仍然遇到同样的错误。我已经更新了我的答案。
    • 嗨 Skabbi,我已经尝试过该解决方案,我也尝试过“setHead”、“set”等,但我仍然遇到同样的错误。错误还指向第 19:14 行...遇到“response.writeHead”...方法时似乎仍然发生错误。
    • 我认为你错误地使用了'writeHead',writeHead的第一个参数是状态码。查看节点HTTP API,您似乎应该改用“res.setHeader”。
    • 嗨,Skabbi,这在一定程度上有所帮助。它已经摆脱了以前的错误,但是现在它产生了一个新的错误...请您帮忙,请参阅编辑后的帖子...谢谢。
    • 嗨,Skabbi,我做了很多实验,重组了代码等...并发现有一个“response.headersSent”布尔属性可以帮助消除错误。在这一点上,我不知道这是否会对应用程序产生负面影响(例如性能、最佳实践),但一定要及时识别。无论如何,我感谢您的帮助。
    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    相关资源
    最近更新 更多