Can't set headers after they are sent?

424
10 ноября 2017, 11:20

Друзья, подскажите пожалуйста по следующему вопросу.

Есть VPS сервер. Установил туда Node.js и свой проект. Я могу обращаться к модулям по IP и порту. При внешнем XMLHTTPRequest запросе к модулю появляется ошибка:

_http_outgoing.js:489 throw new Error('Can\'t set headers after they are sent.'); ^

Error: Can't set headers after they are sent. at validateHeader (_http_outgoing.js:489:11) at ServerResponse.setHeader (_http_outgoing.js:496:3) at Server. (/root/node_modules/iSiN/iSiN.js:23:18) at emitTwo (events.js:125:13) at Server.emit (events.js:213:7) at parserOnIncoming (_http_server.js:602:12) at HTTPParser.parserOnHeadersComplete (_http_common.js:116:23)

Как это исправить?

Код сервера модуля:

var architect = require('neataptic').architect;
var http = require('http');
var url = require('url');
var Response = require('http-outgoing').OutgoingMessage;
console.log("...");
console.log("Модули подключены");
console.log("...");
var answer;
var trainingData = new Array();
var roll_prophecy, roll_realy = 0;
var input_prophecy, output_prophecy;
//Сервер
const server = http.createServer(function (request, response) {
    console.log("Обнаруженно соединение...");
    const queryData = url.parse(request.url, true).query;
    response.writeHead(200, {"Content-Type": "text/plain"});
    if (queryData.param) {
        // клиент прислал параметр
        const land = neuralnetwork(queryData.param);
        response.setHeader('Access-Control-Allow-Origin', '*');
        console.log("2");
        response.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS');
        console.log("3");
        response.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
        console.log("4");
        response.setHeader('Access-Control-Allow-Credentials', true);
        console.log("5");
        response.end(answer);
        console.log("Отправили: " + roll_prophecy );
    } else {
        // Клиент сделал запрос но не прислал данные
        response.end('Ошибка - пустой запрос.');
        console.log("Ой! Что-то cломалось!");
    }
});
//Слушаем порт
server.listen(8001); // слушаем на 8001 порту
//Создаем нейросеть
var narx = new architect.NARX(1, [5, 5, 5], 1, 20, 20);
function neuralnetwork (iSin) {
    console.log("Получили: " + iSin);
    answer = prediction(iSin).toString();
    return answer;
}
READ ALSO
Как сделать отступ при скролле?

Как сделать отступ при скролле?

Здравствуйте! Подскажите, пожалуйста, как изменить механизм работы скрипта, а именно, при выборе секции, чтобы она "подкручивалась" не под...

377
Facebookism во Flow

Facebookism во Flow

Для чего предназначены типы $Facebookism* во flow и как я могу их применить?

331
Получения эксель отчета

Получения эксель отчета

Есть вот такая функция

302
Помогите с конфликтом скриптов

Помогите с конфликтом скриптов

Внизу страницы последовательно подгружаются

406