@@ -34,7 +34,7 @@ function createRenderer (bundle, options) {
3434}
3535
3636let renderer
37-
37+ let readyPromise
3838if ( isProd ) {
3939 // In production: create server renderer using built server bundle.
4040 // The server bundle is generated by vue-ssr-webpack-plugin.
@@ -49,7 +49,7 @@ if (isProd) {
4949} else {
5050 // In development: setup the dev server with watch and hot-reload,
5151 // and create a new renderer on bundle / index template update.
52- require ( './build/setup-dev-server' ) ( app , ( bundle , options ) => {
52+ readyPromise = require ( './build/setup-dev-server' ) ( app , ( bundle , options ) => {
5353 renderer = createRenderer ( bundle , options )
5454 } )
5555}
@@ -78,11 +78,7 @@ const microCache = LRU({
7878// headers.
7979const isCacheable = req => useMicroCache
8080
81- app . get ( '*' , ( req , res ) => {
82- if ( ! renderer ) {
83- return res . end ( 'waiting for compilation... refresh in a moment.' )
84- }
85-
81+ function render ( req , res ) {
8682 const s = Date . now ( )
8783
8884 res . setHeader ( "Content-Type" , "text/html" )
@@ -122,6 +118,10 @@ app.get('*', (req, res) => {
122118 console . log ( `whole request: ${ Date . now ( ) - s } ms` )
123119 }
124120 } )
121+ }
122+
123+ app . get ( '*' , isProd ? render : ( req , res ) => {
124+ readyPromise . then ( ( ) => render ( req , res ) )
125125} )
126126
127127const port = process . env . PORT || 8080
0 commit comments