-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathapp.js
58 lines (49 loc) · 1.42 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
module.exports = function() {
var express = require('express'),
path = require('path'),
config = require('./config.js'),
fs = require('fs'),
app = express();
app.enable('trust proxy');
app.set('trust proxy', 'loopback, linklocal, uniquelocal');
var root = __dirname + '/src/static/prod.html';
var configDir = './config/';
if (process.env.RDB_HOST) {
root = __dirname + '/src/static/dev.html'
}
app.get('/public/manifest.json', function(req, res, next) {
fs.readFile(configDir + '/manifest.json', 'utf8', function (err, data) {
if (err) {
return next(err);
}
res.end(data);
})
});
app.use('/public', express.static(path.join(__dirname, 'public')));
app.get('/sw.js', function(req, res, next) {
fs.readFile(__dirname + '/src/static/sw.js', 'utf8', function (err, data) {
if (err) {
return next(err);
}
var apiEndpoint = config.apiEndpoint;
var version = '/v' + config.apiVersion;
var result = data.replace(/__APIENDPOINT__/g, apiEndpoint + version);
result = result.replace(/__SITEURL__/g, config.siteURL);
res.header("Content-Type", "text/javascript");
res.end(result);
})
});
app.use('/*', function(req, res, next) {
return res.sendFile(root);
});
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.send({
message: err.message,
error: {}
});
});
return app;
};