add changes from v0.3

This commit is contained in:
JJ Kasper
2018-11-24 00:23:32 -06:00
parent 73f05ce4a3
commit 111cf2ed35
133 changed files with 10768 additions and 7443 deletions

View File

@@ -1,11 +1,60 @@
const logger = require('winston')
const app = require('./app')
const port = app.get('port')
const http = require('http')
const path = require('path')
const Next = require('next')
const chokidar = require('chokidar')
const isDev = process.env.NODE_ENV !== 'production'
const next = Next({ dev: isDev, quiet: true })
app.run(port).then(() => {
logger.info('MYKB listening at http://%s:%d', app.get('host'), port)
})
let server = null
let creatingServer = false
process.on('unhandledRejection', (reason, p) =>
logger.error('Unhandled Rejection at: Promise ', p, reason)
)
// prepare next
next.prepare()
global.next = next
async function createServer() {
if (creatingServer) return
creatingServer = true
const { port } = await require('./server/util/config')
if (server) {
console.log('Restarting server...')
await new Promise(resolve => {
server.destroy(() => resolve())
})
}
try {
server = http.createServer(require('./server/server'))
isDev && require('server-destroy')(server)
server.listen(port)
server.once('listening', () => {
creatingServer = false
console.log(`Listening at http://127.0.0.1:${port}`)
})
} catch (err) {
console.error(err)
creatingServer = false
console.log('waiting for change to restart...')
}
}
if (isDev) {
// watch for server changes and hot reload server
// without having to reload next.js
const configPath = path.resolve('./config')
const utilPath = path.resolve('./src/util')
const serverPath = path.resolve('./src/server')
const watcher = chokidar.watch([serverPath, configPath, utilPath], {})
watcher.on('change', path => {
Object.keys(require.cache).forEach(key => {
if (key.indexOf(serverPath) > -1 || key.indexOf(utilPath) > -1) {
delete require.cache[key]
delete module.constructor._pathCache[key]
}
})
createServer()
})
}
createServer()