我正在尝试在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时会重建应用程序?这不是它的工作原理吗?
答案 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
因此,在package.json的"postinstall": "ionic-app-scripts build"
部分添加scripts
,禁用生产模式对我有效。