OpenShift:节点应用程序中的“无法执行控制启动”

我事先意识到这是一个模糊的问题,但我很困惑,还有什么我可以在这里尝试…

我一直在经历其他SO问题,并遵循他们的build议,但到目前为止还没有解决我的问题。

这是我得到的具体错误。

Stopping NodeJS cartridge Fri Jul 10 2015 10:36:28 GMT-0400 (EDT): Stopping application 'appname' ... Fri Jul 10 2015 10:36:29 GMT-0400 (EDT): Stopped Node application 'appname' Starting NodeJS cartridge Fri Jul 10 2015 10:36:30 GMT-0400 (EDT): Starting application 'appname' ... Waiting for application port (8080) become available ... Application 'appname' failed to start (port 8080 not available) Failed to execute: 'control restart' for /var/lib/openshift/MYID/nodejs 

我的package.json文件是最新的将所有我的依赖关系,有scripts: { start: 'node server.js' }属性,但我仍然得到这个错误。

如果我SSH并进入我current/repo目录并运行node server.js它工作正常。 但是,我不能只是使用screen永远在后台运行它。

我也尝试了停止和重新启动,git推送,并通过浏览器重新启动。 我很困惑,还有什么我可以尝试让我的(非常简单)节点应用程序运行在OpenShift上。

任何build议,非常感谢。

对于OpenShift Node应用程序,您需要将启动脚本指定为: main: "server.js"而不是使用scripts 。 这是由于节点应用程序使用节点监控程序在OpenShift上启动的方式。

OpenShift Node应用程序要求您提供配置以在mainscripts.start下的package.json中启动您的应用程序:

 "scripts": { "start": "node server.js" }, "main": "server.js" 

此外,它还需要通过环境变量赋予节点环境提供的IPPORT

 for PORT Number process.env.OPENSHIFT_NODEJS_PORT for IP process.env.OPENSHIFT_NODEJS_IP 

如果这些变量没有在应用程序中使用,则显示如下的错误:

 Waiting for application port (8080) become available ... Application 'appname' failed to start (port 8080 not available) 

下面是一个示例,展示如何在节点应用程序中使用这些环境变量(来自源代码):

 var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080 var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1' server.listen(server_port, server_ip_address, function () { console.log( "listning on " + server_ip_address + ", server_port " + port ) }); 

来源: https : //blog.openshift.com/run-your-nodejs-projects-on-openshift-in-two-simple-steps/

相关文章: 应用程序“appname”未能启动(端口8080不可用)在开放班次节点应用程序