找不到在Red Hat服务器上运行的connect to node.js

找不到在Red Hat服务器上运行的connect to node.js,node.js,linux,redhat,Node.js,Linux,Redhat,我的node.js应用程序所在的位置有一个Red Hat服务器。默认情况下,该应用程序要么在用户设置的端口上运行,要么在8080上运行 app.set('port', process.env.PORT || 8080); http.createServer(app).listen(app.get('port'), function(){ winston.log('info', 'The server has started'); }); 当我通过ssh>登录到Red Hat服务器时,转

我的node.js应用程序所在的位置有一个Red Hat服务器。默认情况下,该应用程序要么在用户设置的端口上运行,要么在8080上运行

app.set('port', process.env.PORT || 8080);
http.createServer(app).listen(app.get('port'), function(){
    winston.log('info', 'The server has started');
});
当我通过ssh>登录到Red Hat服务器时,转到node app目录并运行

node app.js
我明白了

信息:服务器已启动

因此,应用程序运行正常。但是,当我转到应用程序url时

服务器ip地址:8080(示例-104.37.188.221:8080)它不连接,连接最终超时

我没有为端口设置任何环境变量,因此端口将为8080。我假设如果任何其他服务在该端口上运行,它不会让应用程序运行,但事实并非如此

知道发生了什么吗?如何调试此问题


谢谢。

您应该在日志中打印侦听端口,这将帮助您进行调试

app.set('port', process.env.PORT || 8080);
const server = http.createServer(app);
server.listen(app.get('port'), function(){
    winston.log('info', 'The server has started on port ' + server.address().port);
});
另外,如果启用了防火墙,请确保您已打开端口

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
更新:

您可能希望在所有路由的末尾添加错误处理程序,例如

// error handler
app.use(function(err, req, res, next) {
  res.status(err.status || 500).json({ error: err});
});

所以它在8080上运行,但是超时问题仍然存在。获取以下错误:-运行第一个防火墙命令时未找到jailshell:firewall cmd:command。但我不这么认为,你使用的防火墙是什么?您是否处理了错误(404500等)?是的,这是一个node express应用程序