-1
私はNodeJsとZeroMQで基本的なアプリケーションを開発していますが、現在はエラーに直面しています。私はプログラムが "複数回送信"することを提案する解決策を読んだが、私は1つの "送信"方法しか持たない。ブラウザへエラー:送信後にヘッダーを設定できません。 at ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:356:11)
response.status(200).send(JSON.stringify(message.toString()));
response.end();
.send()
と.end()
の両方の回答と重複している:問題はここにある
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;
/*header settings*/
app.use(function (request, response, next) {
response.setHeader('Content-Type', 'text/plain');
response.setHeader('Access-Control-Allow-Origin', 'http://localhost:8888');
response.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
response.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
response.setHeader('Access-Control-Allow-Credentials', true);
next();
});
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.status(200).send(JSON.stringify(message.toString()));
});
});
// test purposes
app.get('/recieve', function (request, response) {
response.send("{ 'led': 'on' }").end();
});
/** start app **/
app.listen(server_port);
console.log("Server started on port: " + server_port);
はい私は文字列を文字列化していることを発見しました。これは、愚かな間違いの1つで、頭を上げてくれます。 – meji
あなたの問題は解決しましたか? –
問題を解決したと思われる "response.headersSent"ブール値を発見して使用しました。あなたの答えは私の問題を直接解決しませんでした。しかし、それは私が注意を払った良い練習の面で正しいです。 – meji