File tree Expand file tree Collapse file tree 3 files changed +31
-2
lines changed
server/prod-server/src/libs/render
solutions/app-tools/src/analyze Expand file tree Collapse file tree 3 files changed +31
-2
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ ' @modern-js/app-tools ' : patch
3+ ' @modern-js/prod-server ' : patch
4+ ---
5+
6+ chore: ssr mode support async entry
Original file line number Diff line number Diff line change @@ -78,7 +78,8 @@ export const render = async (
7878 context . metrics = createMetrics ( context , ctx . metrics ) ;
7979
8080 runner . extendSSRContext ( context ) ;
81- const serverRender = require ( bundleJS ) [ SERVER_RENDER_FUNCTION_NAME ] ;
81+ const bundleJSContent = await require ( bundleJS ) ;
82+ const serverRender = bundleJSContent [ SERVER_RENDER_FUNCTION_NAME ] ;
8283 const content = await cache ( serverRender , ctx ) ( context ) ;
8384
8485 const { url, status = 302 } = context . redirection ;
Original file line number Diff line number Diff line change @@ -285,9 +285,31 @@ export const generateCode = async (
285285
286286 // generate entry file.
287287 if ( config . source . enableAsyncEntry ) {
288+ let rawAsyncEntryCode = `import('./${ ENTRY_BOOTSTRAP_FILE_NAME } ');` ;
289+ const ssr = getEntryOptions (
290+ entryName ,
291+ config . server . ssr ,
292+ config . server . ssrByEntries ,
293+ packageName ,
294+ ) ;
295+ if ( ssr ) {
296+ rawAsyncEntryCode = `
297+ export const serverRender = async (...args) => {
298+ let exports = await ${ rawAsyncEntryCode } ;
299+ if(exports.default instanceof Promise){
300+ exports = await exports.default;
301+ return exports.default.serverRender.apply(null, args);
302+ }
303+ return exports.serverRender.apply(null, args);
304+ };
305+ if(typeof window!=='undefined'){
306+ ${ rawAsyncEntryCode }
307+ }
308+ ` ;
309+ }
288310 const { code : asyncEntryCode } = await hookRunners . modifyAsyncEntry ( {
289311 entrypoint,
290- code : `import('./ ${ ENTRY_BOOTSTRAP_FILE_NAME } ');` ,
312+ code : rawAsyncEntryCode ,
291313 } ) ;
292314 fs . outputFileSync ( entryFile , asyncEntryCode , 'utf8' ) ;
293315
You can’t perform that action at this time.
0 commit comments