Приложение Node.js работает на мастере, но не на героку. 404 Ошибка

Я использую Yeoman/bower/grunt для создания углового приложения. Приложение отлично работает на Формане. В моем поиске похожих вопросов о стеке большинство других людей просто забыли создать свой Procfile или имели ошибки в своем app.js, который запускал приложение. Но у меня есть и те и другие, и я не могу понять, что с ними не так, например, что бригадир работает, а не хероку. Когда я развертываю героку и открываю его, я получаю это в журнале:

2013-10-02T19:33:56.159151+00:00 heroku[api]: Deploy b417d22 by [email protected]
2013-10-02T19:33:56.202052+00:00 heroku[api]: Release v10 created by     [email protected]
2013-10-02T20:38:51.350572+00:00 heroku[web.1]: Idling
2013-10-02T20:38:57.626159+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2013-10-02T20:39:02.097317+00:00 heroku[web.1]: State changed from up to down
2013-10-02T20:39:02.079612+00:00 heroku[web.1]: Process exited with status 143
2013-10-02T22:00:00.360769+00:00 heroku[web.1]: Unidling
2013-10-02T22:00:00.361135+00:00 heroku[web.1]: State changed from down to starting
2013-10-02T22:00:04.049439+00:00 heroku[web.1]: Starting process with command `node app.js`
2013-10-02T22:00:06.128657+00:00 app[web.1]: server started 40741
2013-10-02T22:00:06.164522+00:00 heroku[web.1]: State changed from starting to up
2013-10-02T22:00:07.479644+00:00 heroku[router]: at=info method=GET path=/ host=rickydavila-kpopbetter-s.herokuapp.com fwd="71.144.19.194" dyno=web.1 connect=9ms service=30ms status=404 bytes=22

Никакой ошибки (я, наверное, не до конца понимаю лог), просто убивает приложение.

Мой Procfile говорит: «узел app.js»

Мой файл app.js, который создает экспресс-сервер для запуска приложения:

var express = require('express');

var path = require('path');

var app = express();

app.configure(function(){
  'use strict';
  app.use(express.bodyParser());
  app.use(express.static(path.join(__dirname, 'dist')));
});

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

app.listen(port, function() {
    'use strict';
    console.log('server started '+port);
});

Grunt создает приложение в моей папке dist, на которую я ссылаюсь выше. Есть явные ошибки выше? Когда я открываю URL-адрес приложения heroku, на странице появляется сообщение: Cannot GET/

О, я также масштабировал динамометры, поскольку некоторые другие вопросы не помогли. И, насколько мне известно, я не жестко кодирую порт.


person rickydav    schedule 02.10.2013    source источник


Ответы (1)


Догадаться. Всегда проверяйте файл .gitignore! Я забыл удалить dist из файла, и он не был зафиксирован или отправлен в героку.

person rickydav    schedule 03.10.2013
comment
Большое спасибо, как и вы, я везде искал решение. Я надеялся настроить это таким образом, чтобы мне не нужно было фиксировать dist в репозитории, а просто собрать travis и развернуть его из моего исходного кода. Есть ли у вас какие-либо мысли о том, как это сделать, или это хорошая/плохая идея? - person Joseph Spens; 12.12.2013
comment
Ничего не знаю о Трэвисе, но если вы спрашиваете, как не коммитить dist, а только развернуть dist на героку, то поищите, как это сделать с помощью git, я помню, что видел вопрос и ответ по этому поводу. Def возможно, и многие люди делают это: я сделал быстрый поиск и увидел это: [ссылка] (stackoverflow.com/questions/18183872/), ссылка. Надеюсь, что это полезно - person rickydav; 14.12.2013
comment
Спасибо! Я использовал метод поддерева, первый с dist в отдельной ветке интересен. Я думаю, что могу манипулировать процессом сборки, чтобы сделать одно из них автоматически. - person Joseph Spens; 14.12.2013
comment
Это х1000000. Потерял так много времени, пытаясь понять, почему heroku не будет обслуживать мой публичный каталог. Он был добавлен в .gitignore. Дох! - person Liam George Betsworth; 06.07.2016