add changes from v0.3
This commit is contained in:
67
src/index.js
67
src/index.js
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user