-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
70 lines (58 loc) · 2.63 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
60
61
62
63
64
65
66
67
68
69
70
/* ===================
Import Node Modules
=================== */
const express = require("express"); // Fast, unopinionated, minimalist web framework for node.
const mongoose = require("mongoose"); // Node Tool for MongoDB
const bodyParser = require("body-parser"); // Parse incoming request bodies in a middleware before your handlers, available under the req.body property.
const passport = require("passport");
const path = require("path"); // NodeJS Package for file paths
const users = require("./routes/api/users"); // Import Users Routes
const profile = require("./routes/api/profile"); // Import Profile Routes
const posts = require("./routes/api/posts"); // Import Posts Routes
const mails = require("./routes/api/mails"); // Import mails Routes
const projects = require("./routes/api/portfolio"); // Import portfolio Routes
const app = express();
// Body parser middleware
app.use(
bodyParser.urlencoded({
extended: false
})
); // parse application/x-www-form-urlencoded
app.use(bodyParser.json()); // parse application/json
// Gonfig files
const db = require("./config/keys").mongoURI; // Mongoose Config
require("./config/passport")(passport); // Passport config
// Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
//Configure Mongoose Promises
mongoose
.set("useFindAndModify", false)
.connect(db, { useNewUrlParser: true })
.then(() => console.log("MongoDB connected"))
.catch(err => console.log(err));
// Middleware
app.use(passport.initialize()); // Passport middleware
// define a route to download a file
app.get("/download/:file(*)", (req, res) => {
var file = req.params.file;
var fileLocation = path.join(__dirname + "/client/build/upload/files", file);
console.log(fileLocation);
res.download(fileLocation, file);
});
// Routes
app.use("/api/v2/users", users); // Use users routes in application
app.use("/api/v2/profile", profile); // Use profile routes in application
app.use("/api/v2/posts", posts); // Use Blog routes in application
app.use("/api/v2/mails", mails); // Use Mails routes in application
app.use("/api/v2/projects", projects); // Use Portfolio routes in application
// Server static assets, used if in production
if (process.env.NODE_ENV === "production") {
// Serve static files from the React app
app.use(express.static(path.join(__dirname, "client/build"))); // Provide static directory for frontend, like CSS, JS
app.get("*", (req, res) => {
res.sendFile(path.join(__dirname + "/client/build/index.html"));
});
}
// Server
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server running on port ${port}`));