-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.js
40 lines (31 loc) · 1.1 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
// This file doesn't not go through babel or webpack transformation.
// Make sure the syntax and sources this file requires are compatible with the current node version you are running
// See https://github.com/zeit/next.js/issues/1245 for discussions on Universal Webpack or universal Babel
const express = require('express')
const request = require('request')
const next = require('next')
const env = process.env.NODE_ENV
const dev = env !== 'production'
const port = parseInt(process.env.PORT, 10) || 3000
const app = next({ dev })
const handle = app.getRequestHandler()
app.prepare().then(() => {
const server = express()
server.use('/r*', (req, res) => {
const url = 'https://reddit.com/' + req.originalUrl
req.pipe(request(url)).pipe(res)
})
server.get('/', (req, res) => res.redirect(301, '/mechmarket'))
server.get('/:subreddit/:flair?', (req, res) => {
app.render(req, res, '/', req.query)
})
server.get('*', (req, res) => {
handle(req, res)
})
server.listen(port, err => {
if (err) {
throw err
}
console.log(`> Ready on port ${port} [${env}]`)
})
})