Skip to content

Commit

Permalink
chore: serverMiddleware HMR improvements (#6896)
Browse files Browse the repository at this point in the history
* chore(server): fallback route for resolveMiddleware

* chore(server): support express HMR

[release]
  • Loading branch information
pi0 committed Jan 20, 2020
1 parent a375a6c commit a84f31d
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions packages/server/src/server.js
Expand Up @@ -206,6 +206,12 @@ export default class Server {
}
}

// SubApp (Express)
if (typeof middleware.handle.handle === 'function') {
const server = middleware.handle
middleware.handle = server.handle.bind(server)
}

return middleware
}

Expand All @@ -222,10 +228,7 @@ export default class Server {
consola.error('ServerMiddleware Error:', error)

// Placeholder for error
middleware = {
route: '#error',
handle: (req, res, next) => { next(error) }
}
middleware = (req, res, next) => { next(error) }
}

// Normalize
Expand All @@ -237,10 +240,15 @@ export default class Server {
return middleware
}

resolveMiddleware (middleware) {
resolveMiddleware (middleware, fallbackRoute = '/') {
// Ensure middleware is normalized
middleware = this._normalizeMiddleware(middleware)

// Fallback route
if (!middleware.route) {
middleware.route = fallbackRoute
}

// Resolve final route
middleware.route = (
(middleware.prefix !== false ? this.options.router.base : '') +
Expand All @@ -255,7 +263,7 @@ export default class Server {

useMiddleware (middleware) {
const { route, handle } = this.resolveMiddleware(middleware)
this.app.use(route.includes('#error') ? '/' : route, handle)
this.app.use(route, handle)
}

replaceMiddleware (query, middleware) {
Expand All @@ -275,7 +283,7 @@ export default class Server {
}

// Resolve middleware
const { route, handle } = this.resolveMiddleware(middleware)
const { route, handle } = this.resolveMiddleware(middleware, serverStackItem.route)

// Update serverStackItem
serverStackItem.handle = handle
Expand Down

0 comments on commit a84f31d

Please sign in to comment.