对不起,我是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()函数是否有问题,或者格式是否有些奇怪。是否有人对如何做以及可能导致此错误的问题有任何建议或答案,所以我将来可以避免它?
答案 0 :(得分:0)
Heroku要求您在自己指定的端口上使用监听。
http.listen(process.env.PORT);
这已解决了问题,一切都按计划进行。 heroku文档到处都是,但是我终于从客户服务那里得到了。