server.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const Nuxt = require('nuxt')
  2. const app = require('express')()
  3. const proxy = require('http-proxy-middleware')
  4. const host = process.env.HOST || '127.0.0.1'
  5. const port = process.env.PORT || 3000
  6. process.noDeprecation = true
  7. app.set('port', port)
  8. // Import and Set Nuxt.js options
  9. let config = require('./nuxt.config.js')
  10. config.dev = !(process.env.NODE_ENV === 'production')
  11. // 请求代理,dev模式下使用,接口服务器如果支持跨域可去掉
  12. const proxyTable = config.proxyTable
  13. if (config.dev && proxyTable) {
  14. // 本地代理支持localhost、127.0.0.1等不同地址跨域
  15. app.use((req, res, next) => {
  16. res.header('Access-Control-Allow-Origin', '*')
  17. res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE')
  18. res.header('Access-Control-Allow-Headers', 'Content-Type')
  19. res.header('Access-Control-Allow-Credentials', 'true')
  20. next()
  21. })
  22. if (Array.isArray(proxyTable)) {
  23. app.use(proxy(proxyTable, {
  24. target: config.env.baseUrl,
  25. changeOrigin: true
  26. }))
  27. } else {
  28. Object.keys(proxyTable).forEach((context) => {
  29. var options = proxyTable[context]
  30. if (typeof options === 'string') {
  31. options = { target: options }
  32. }
  33. app.use(proxy(context, options))
  34. })
  35. }
  36. // axios use proxy url
  37. config.env.proxyUrl = '/'
  38. }
  39. // Init Nuxt.js
  40. const nuxt = new Nuxt(config)
  41. app.use(nuxt.render)
  42. // Build only in dev mode
  43. if (config.dev) {
  44. nuxt.build()
  45. .catch((error) => {
  46. // eslint-disable-line no-console
  47. console.error(error)
  48. process.exit(1)
  49. })
  50. }
  51. // Listen the server
  52. app.listen(port)
  53. // eslint-disable-line no-console
  54. console.log(`Nuxt.js SSR Server listening on ${host} : ${port}, at ${new Date().toLocaleString()} \nusing api ${config.env.baseUrl}`)