为什么我的反应应用程序会在Heroku上崩溃?

时间:2016-06-27 03:17:23

标签: heroku reactjs heroku-toolbelt

我不相信我有任何配置变量添加... 我在package.json中添加了npm start。

这是我的server.js     var app = express();

var compiler = webpack(config);

app.use(webpackDevMiddleware(compiler, {noInfo: true, publicPath: config.output.publicPath}));
app.use(webpackHotMiddleware(compiler));

app.use(express.static('./dist'));

app.use('/', function (req, res) {
    res.sendFile(path.resolve('client/index.html'));
});

var port = 8080;

app.listen(port, function(error) {
  if (error) throw error;
  console.log("Express server listening on port", port);
});

Heroku活动日志

2016-06-27T05:26:06.606689+00:00 app[web.1]: > POM@0.3.1 start /app
2016-06-27T05:26:06.970312+00:00 app[web.1]: Express server listening on port 8080
2016-06-27T05:26:12.086607+00:00 app[web.1]: webpack built ece2fe8356b0c26f2ade in 5135ms
2016-06-27T05:26:44.560624+00:00 heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path="/" host=pom1.herokuapp.com request_id=77a8ad82-edc4-4dfb-a624-b1a92a5f008c fwd="173.239.65.34" dyno= connect= service= status=503 bytes=
2016-06-27T05:27:04.972688+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
enter code here

1 个答案:

答案 0 :(得分:0)

它可能已超时,因为您的应用尚未连接到heroku提供的端口。您将通过环境变量向您提供端口号,因此您应该像这样声明您的端口

"attachments": {
            "data": [
               {
                  "media": {
                     "image": {
                        "height": 400,
                        "src": "https://scontent.xx.fbcdn.net/v/t1.0-1/10250217_10152130974757825_8645405213175562082_n.jpg?oh=904c1785fc974a3208f1d18ac07d59f3&oe=57CED94D",
                        "width": 400
                     }
                  },
                  "target": {
                     "id": "74286767824",
                     "url": "https://www.facebook.com/LAInternationalAirport/"
                  },
                  "title": "Los Angeles International Airport (LAX)",
                  "type": "map",
                  "url": "https://www.facebook.com/LAInternationalAirport/"
               }
            ]
         }

这将默认为环境变量中指定的端口(通过heroku),如果没有设置,则返回8080.

我相信heroku上的getting started部分涉及到这一点以及您应该了解的有关部署到heroku的其他一些内容,同时还提供了example application