0

所以简而言之,我正在尝试: 通过 Codeship 和从 Codeship 到 Heroku部署 - https://expressjs.com/en/starter/hello-world.html 。

我一直在尝试遵循来自https://expressjs.com/en/starter/hello-world.html的非常基本的Hello-World express 教程,但随后 codeship check_url阶段无法在 Heroku 上正确加载,出现以下错误:

    Connecting to intfdsf-dsfdfsdf-323423.herokuapp.com (intfdsf-dsfdfsdf-323423.herokuapp.com)|54.243.89.187|:80... connected.
    HTTP request sent, awaiting response... 503 Service Unavailable
    2016-07-22 02:18:12 ERROR 503: Service Unavailable.

设置命令下,我尝试了以下操作:

    nvm install 0.10
    nvm use 0.10
    npm install

    nvm install 6.3.0
    nvm use 6.3.0
    npm install

两者都以同样的方式失败。

并添加类似npm start挂起该行的过程....

web: node server.js为了以防万一和最佳实践,我添加了一个 Procfile并将 app.js 重命名为 server.js。最后,我确实engines在我的定义中package.json这样定义:

    {
        "name": "node-ship",
        "version": "1.0.0",
        "description": "",
        "main": "server.js",
        "engines": {
            "node": "5.6.x",
            "npm": "3.10.x"
        },
        "scripts": {
            "start" : "node server.js",
            "test": "echo \"Error: no test specified\" && exit 1"
        },
        "repository": {
            "type": "git",
            "url": "git+https://github.com/slfkjsdlfjklsdkfj/node-ship.git"
        },
        "author": "slfkjsdlfjklsdkfj",
        "license": "ISC",
        "bugs": {
            "url": "https://github.com/slfkjsdlfjklsdkfj/node-ship/issues"
        },
        "homepage": "https://github.com/slfkjsdlfjklsdkfj/node-ship#readme",
        "dependencies": {
            "express": "^4.14.0"
        }
    }

我错过了什么?这样我就可以让 Heroku 正确加载 expressjs,就像我运行时在本地加载一样node app.js

谢谢您的帮助。

这里也是 server.js 文件:

    var express = require('express');
    var app = express();

    app.get('/', function (req, res) {
        res.send('Hello World!');
    });

    app.listen(5000, function () {
        console.log('Example app listening on port 5000!');
    });
4

2 回答 2

1

Heroku 依赖于端口环境变量的使用。

所以server.js文件应该有:

var port = process.env.PORT || 5000;

app.get('/', function (req, res) {
    res.send('Hello World!');
});

app.listen(port, function () {
    console.log('Example app listening on port '+ port +'!');
});

强调var port = ...部分

然后 Procfile 将用它的web: node server.js

于 2016-07-23T00:04:33.620 回答
0

check_urlCodeship 在 Heroku 部署结束时运行的脚本wget用于检查 Heroku 应用程序的根 URL 的状态代码。(如果您想检查不同的 URL,“更多选项”链接后面隐藏着一个设置)。

只要该页面返回 2xx 或 3xx 范围内的状态代码,检查就会成功。

有关完整脚本,请参阅https://github.com/codeship/scripts/blob/master/utilities/check_url.sh

于 2016-07-25T08:00:37.020 回答