我事先意识到这是一个模糊的问题,但我很困惑,还有什么我可以在这里尝试…
我一直在经历其他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应用程序要求您提供配置以在main和scripts.start下的package.json中启动您的应用程序:
"scripts": { "start": "node server.js" }, "main": "server.js"
此外,它还需要通过环境变量赋予节点环境提供的IP和PORT :
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不可用)在开放班次节点应用程序