2017-01-04 6 views
3

Я пытаюсь развернуть мое приложение ionic2 на Heroku. Я смотрел на этих сайтах:Развертывание Ionic2 на Heroku

и создал server.js файл:

var express = require('express'); 
var app  = express();        // create our app w/ express 
var morgan = require('morgan');    // log requests to the console (express4) 
var bodyParser = require('body-parser'); // pull information from HTML POST (express4) 
var cors = require('cors'); 

app.use(morgan('dev'));           // log every request to the console 
app.use(bodyParser.urlencoded({'extended':'true'}));   // parse application/x-www-form-urlencoded 
app.use(bodyParser.json());          // parse application/json 
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json 
// app.use(methodOverride()); 
app.use(cors()); 

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header('Access-Control-Allow-Methods', 'DELETE, PUT'); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

app.use(express.static('www')); 
app.set('port', process.env.PORT || 5000); 
app.listen(app.get('port'), function() { 
    console.log('Express server listening on port ' + app.get('port')); 
}); 

Поскольку у меня нет никаких моделей и не БД на этом время, я исключил монго и мангуста.

Сервер работает нормально, когда я запускаю его на моей локальной машине через npm start, но когда я запускаю его на Heroku, я получаю:

Cannot GET/

на этой странице. Heroku Журналы показывает:

2017-01-04T19:56:59.385666+00:00 heroku[web.1]: State changed from starting to up 
2017-01-04T19:57:00.546815+00:00 heroku[router]: at=info method=GET path="/" host=hrmghp-companion.herokuapp.com request_id=4c010120-3dce-4f99-b31c-99dc0883f314 fwd="108.44.230.178" dyno=web.1 connect=1ms service=49ms status=404 bytes=364 
2017-01-04T19:57:00.549928+00:00 app[web.1]: GET/404 19.924 ms - 13 

я упускаю что-то в моем server.js файле?

Редактировать: Я нашел проблему. У меня был www/ в моем .gitignore файле. Я предположил, что он будет перестраивать приложение при развертывании в heroku? Разве это не так, как это работает?

+0

Спасибо за www/tip. Я предполагаю, что это потому, что я использую автоматическое развертывание Heroku после того, как код нажимается на ветку Github. –

ответ

3

Не добавляйте www в ваш репозиторий. Вы не хотите отслеживать все эти файлы. Вместо этого включите "postinstall": "ionic-app-scripts build" в раздел scripts вашего пакета.json. Это приведет к восстановлению приложения и восстановлению папки www для вас на Heroku.

+0

Это лучший способ сделать это. Мой путь - это «быстрый и грязный» способ, но в конечном итоге это неправильно. Не добавляйте www в репо. – Jeff

2

Просто хочу добавить что-нибудь к ответу Алекса. Убедитесь, что вы либо добавить ionic-app-scripts как зависимость (в отличие от devDependency), или отключить режим производства в Heroku с помощью heroku config:set NPM_CONFIG_PRODUCTION=false

Так, добавление "postinstall": "ionic-app-scripts build" в scripts разделе package.json, и отключение режима производства работало на меня.

Смежные вопросы