0

我正在尝试将我使用 express 在本地创建的 MEAN-Application 推送到 OpenShift。为此,我从仪表板创建了一个新应用程序,并将 NodeJS 添加为插件。然后,当我添加我的 Git-Repository-URL(托管在 BitBucket 上)并创建应用程序时,我收到以下错误:

Openshift 仪表板中的错误

当我在不输入存储库 URL 的情况下创建新应用程序,然后从 Openshift 中提取,复制到我的项目并再次推送时,我收到类似的错误:

来自 Git-Push 的错误

端口 8080 不可用似乎是一些问题,但我自己无法解决这个问题,因为我是新手,无法在网络上找到解决方案,因此感谢任何帮助和建议。

编辑:当我说 MEAN 时,我实际上是指 EAN;我目前不使用 MongoDB。

编辑 2:几个小时后,我决定尝试 Heroku。它在第一次尝试时也不起作用,但日志包含更多有用的信息,所以我在大约一个小时内启动并运行了所有东西(相比之下,使用 OpenShift 尝试了 4 小时)。之后,我尝试将我推送到 Heroku 的完全相同的项目推送到 Openshift 并得到以下新错误:

新的 Openshift 错误日志

同样,如果有人碰巧知道对此的快速修复,请告诉我,因为我仍然想使用 OpenShift。

4

2 回答 2

0

您的 NodeJS 代码应如下所示:

var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
http.createServer().listen(port);

OPENSHIFT_NODEJS_PORT如果它可用,它将使用 8080的值,当您在 OpenShift 之外运行应用程序时仍使用 8080。或者您甚至可以OPENSHIFT_NODEJS_PORT=8080在本地机器上设置环境变量以更接近地模拟 OpenShift 环境。

请注意,您还应该检查环境变量以获取正确的服务器 IP 地址。有关详细信息,请参阅此文档

于 2015-08-15T16:15:45.007 回答
0

对我有用的是以下内容:

  1. 在 OpenSHIft 上创建 App,暂时将 Repo Url 留空。
  2. 用于git remote add openshift -f <openshift-git-repo-url (ssh://...something)>将 Openshift-Repo 作为远程 Repo 添加到您的项目中。
  3. 用于git merge openshift/master -s recursive -X ours将 Openshift-Repo 合并到您的本地 Repo 并在出现冲突时保留您的文件。
  4. (这是重要的一步)您的主文件(对我来说是 bin/www)必须看起来像这样(我尝试了一切来格式化它,但它只是没有正确格式化):

    var app = require('../app'); var debug = require('debug')('CTW:server'); var http = require('http');

    /**

    • 从环境中获取端口并存储在 Express 中。*/ app.set('port', process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || 3002); app.set('ip', process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1");

    /**

    • 创建 HTTP 服务器。*/

    var server = http.createServer(app);

    /**

    • 在所有网络接口上侦听提供的端口。*/

    server.listen(app.get('port') ,app.get('ip'));

  5. git push openshift HEAD将其推送到您的应用程序存储库

事实证明,我必须设置 IP。

所有的功劳都归功于这个这个问题得到了答案。

于 2015-08-25T16:32:12.583 回答