heroku错误:R10,nodejs

时间:2018-06-26 01:13:12

标签: node.js heroku

对不起,我是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进行回复。

我想知道listen()函数是否有问题,或者格式是否有些奇怪。是否有人对如何做以及可能导致此错误的问题有任何建议或答案,所以我将来可以避免它?

1 个答案:

答案 0 :(得分:0)

Heroku要求您在自己指定的端口上使用监听。

http.listen(process.env.PORT); 

这已解决了问题,一切都按计划进行。 heroku文档到处都是,但是我终于从客户服务那里得到了。