ошибка в герои: R10, nodejs - PullRequest
0 голосов
/ 26 июня 2018

Извините, я новичок в nodejs и heroku.Я просмотрел несколько разных вопросов на этом сайте, на которые были даны ответы, и я попробовал их, но я не смог обойти эту проблему, поэтому я подумал, что в коде должно быть что-то еще.

В настоящее время, если вы запускаете его локально, вероятно, нет, но есть проблема при попытке запустить его на heroku.

Журналы:

heroku[web.1]: State changed from starting to crashed
heroku[web.1]: State changed from crashed to starting
heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
heroku[web.1]: Stopping process with SIGKILL
heroku[web.1]: Process exited with status 137

Index.js

#!/usr/bin/env nodejs

// Set: Var
var msg = '';
var fs = require("fs");
var http = require('http');
var user_update = require('./libs/user_update.js');
var user_keypress = require('./libs/user_keypress.js');
var users = {
    '127.0.0.10':   {name: 'john doe', date: '20180625'},
};

// Background
setInterval(function(){users = user_update.move(users);}, 200);

// Run
http.createServer(function (request, response) {

    if(request.url.indexOf('/keypress/') !== -1)
    {
        console.log('/keypress/');
        var temp = request.url.split('/keypress/');
        var keypress = temp[Number(temp.length) - 1];
        var user = request.connection.remoteAddress.replace(/[^0-9.]/g, "");
        if(user in users)
        {
            users[user] = user_keypress[keypress](users[user]);
        }
    }
    if(request.url.indexOf('/update/users') !== -1)
    {
        console.log('/update/users');
        msg = JSON.stringify(users);
    }
    else if(request.url.indexOf('/start/') !== -1)
    {
        var temp = request.url.split('/start/');
        var username = temp[Number(temp.length) - 1];

        var user = request.connection.remoteAddress.replace(/[^0-9.]/g, "");
        if(user in users)
        {
            delete users[user];
        }
        var d = new Date;
        var timestamp = d.getFullYear() +''+ d.getMonth() +''+ d.getDay() +''+ d.getHours() +''+ d.getMinutes();
        users[user] = {name: username, date: timestamp,};
        msg = 'connect';
    }
    else{msg = 'Sever: waiting...';}
    response.writeHead(200, {
        'Access-Control-Allow-Origin': "*",
        'Access-Control-Allow-Methods': "POST, GET, PUT, DELETE, OPTIONS",
        'Access-Control-Allow-Credentials': false,
        'Access-Control-Max-Age': 86400,
        'Content-Type': 'application/json',
    });
    response.end(msg);
}).listen(3000, function () {console.log('Server running on port 3000!');});

console.log('Server running at http://127.0.0.1');

Приложение используется в качестве бэкэнда для небольшого приложения, которое я переключаю на nodejs.Доступ к нему осуществляется через ajax с другого сайта, и он должен отвечать JSON на основе переменной users.

Мне интересно, есть ли проблема с функцией listen () или, возможно, что-то странное с форматом,У кого-нибудь есть предложения или ответы о том, что делать и что может быть причиной этой ошибки, чтобы я мог избежать ее в будущем?

1 Ответ

0 голосов
/ 26 июня 2018

Heroku требует, чтобы вы использовали для прослушивания собственный указанный порт.

http.listen(process.env.PORT); 

Это устранило проблему, и все работает, как запланировано.Документация к героку повсюду, но я наконец-то получил ее от службы поддержки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...