configure.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. 'use strict'
  2. module.exports = (port, spinner) => {
  3. const ROOTPATH = __dirname
  4. const IS_DEBUG = process.env.NODE_ENV === 'development'
  5. // ----------------------------------------
  6. // Load modules
  7. // ----------------------------------------
  8. const bodyParser = require('body-parser')
  9. const compression = require('compression')
  10. const express = require('express')
  11. const favicon = require('serve-favicon')
  12. const http = require('http')
  13. const path = require('path')
  14. // ----------------------------------------
  15. // Define Express App
  16. // ----------------------------------------
  17. var app = express()
  18. app.use(compression())
  19. // ----------------------------------------
  20. // Public Assets
  21. // ----------------------------------------
  22. app.use(favicon(path.join(ROOTPATH, 'assets', 'favicon.ico')))
  23. app.use(express.static(path.join(ROOTPATH, 'assets')))
  24. // ----------------------------------------
  25. // View Engine Setup
  26. // ----------------------------------------
  27. app.set('views', path.join(ROOTPATH, 'views'))
  28. app.set('view engine', 'pug')
  29. app.use(bodyParser.json())
  30. app.use(bodyParser.urlencoded({ extended: false }))
  31. app.locals._ = require('lodash')
  32. // ----------------------------------------
  33. // Controllers
  34. // ----------------------------------------
  35. app.get('*', (req, res) => {
  36. res.render('configure/index')
  37. })
  38. // ----------------------------------------
  39. // Error handling
  40. // ----------------------------------------
  41. app.use(function (req, res, next) {
  42. var err = new Error('Not Found')
  43. err.status = 404
  44. next(err)
  45. })
  46. app.use(function (err, req, res, next) {
  47. res.status(err.status || 500)
  48. res.send({
  49. message: err.message,
  50. error: IS_DEBUG ? err : {}
  51. })
  52. spinner.fail(err.message)
  53. process.exit(1)
  54. })
  55. // ----------------------------------------
  56. // Start HTTP server
  57. // ----------------------------------------
  58. spinner.text = 'Starting HTTP server...'
  59. app.set('port', port)
  60. var server = http.createServer(app)
  61. server.listen(port)
  62. server.on('error', (error) => {
  63. if (error.syscall !== 'listen') {
  64. throw error
  65. }
  66. switch (error.code) {
  67. case 'EACCES':
  68. spinner.fail('Listening on port ' + port + ' requires elevated privileges!')
  69. process.exit(1)
  70. break
  71. case 'EADDRINUSE':
  72. spinner.fail('Port ' + port + ' is already in use!')
  73. process.exit(1)
  74. break
  75. default:
  76. throw error
  77. }
  78. })
  79. server.on('listening', () => {
  80. spinner.text = 'Browse to http://localhost:' + port + ' to configure Wiki.js!'
  81. })
  82. }