-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
59 lines (49 loc) · 1.74 KB
/
server.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
59
const { setConfig } = require('./config/config')
const express = require('express')
const mongoose = require('mongoose')
const bodyParser = require('body-parser')
const cors = require('cors')
const Passport = require('./Services/Passport')
const morgan = require('morgan')
const path = require('path')
const User = require('./routes/User')
const Expense = require('./routes/Expense')
const Income = require('./routes/Income')
// Initialize Server, Port and DB Setup
const config = setConfig()
const Server = express()
const Port = config.port
console.log("heroku port", Port)
mongoose.connect(config.database, { useNewUrlParser: true })
.then(response => {
console.log(`Connected to DB: ${config.database}`)
})
.catch(e => {
console.log({
message: 'Failed to connect to DB',
error: e.message
})
})
// Middleware
Server.use(morgan('tiny'))
Server.use(cors()) // Cross site requests. Basically we can call the API from our react frontend on a different port
Server.use(bodyParser.json()) // Adds a body to the request so we can send data in json format
Server.use('/user', User)
Server.use('/expense', Expense)
Server.use('/income', Income)
Server.use(Passport.initialize()) // Initialize the Passport middleware
if (process.env.NODE_ENV === 'production') {
// Serve any static files
Server.use(express.static(path.join(__dirname, 'client/build')));
// Handle React routing, return all requests to React app
Server.get('*', function(req, res) {
res.sendFile(path.join(__dirname, 'client/build', 'index.html'));
});
}
// Start Server
Server.listen(Port,'0.0.0.0', (err) => {
if(err) {
console.log('Server Error', err)
}
console.log(`Server running on Port: ${Port}`)
})