在Heroku上部署Ionic2

时间:2017-01-04 21:07:23

标签: node.js heroku ionic2

我正在尝试在Heroku上部署我的ionic2应用程序。我查看了这些网站:

并创建了一个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'));
});

由于我目前没有模特,没有数据库,我排除了mongo和mongoose。

当我通过npm start在本地计算机上运行服务器时运行正常但是当我在heroku上运行它时,我得到:

Cannot GET /
在页面上

。 Heroku Logs显示:

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时会重建应用程序?这不是它的工作原理吗?

2 个答案:

答案 0 :(得分:5)

不要将www添加到您的存储库中。您不想跟踪所有这些文件。相反,请在package.json的"postinstall": "ionic-app-scripts build"部分中包含scripts。这将重建应用程序并在Heroku上为您重新生成www文件夹。

答案 1 :(得分:2)

只想在Alex的回答中加入一些内容。确保您将ionic-app-scripts添加为依赖项(而不是devDependency),或者通过heroku config:set NPM_CONFIG_PRODUCTION=false

在heroku中禁用生产模式

因此,在package.json的"postinstall": "ionic-app-scripts build"部分添加scripts,禁用生产模式对我有效。