File tree Expand file tree Collapse file tree 2 files changed +18
-3
lines changed Expand file tree Collapse file tree 2 files changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -8,6 +8,8 @@ import {scullyConfig} from '../utils/config';
8
8
import { logError , yellow } from '../utils/log' ;
9
9
import { launchedBrowser } from './launchedBrowser' ;
10
10
11
+ const errorredPages = new Set < string > ( ) ;
12
+
11
13
export const puppeteerRender = async ( route : HandledRoute ) : Promise < string > => {
12
14
let version = '0.0.0' ;
13
15
try {
@@ -70,6 +72,16 @@ export const puppeteerRender = async (route: HandledRoute): Promise<string> => {
70
72
// tslint:disable-next-line: no-unused-expression
71
73
page && typeof page . close === 'function' && ( await page . close ( ) ) ;
72
74
logError ( `Puppeteer error while rendering "${ yellow ( route . route ) } "` , err ) ;
75
+ if ( errorredPages . has ( route . route ) ) {
76
+ /** we tried this page before, something is really off. Exit stage left. */
77
+ process . exit ( 15 ) ;
78
+ } else {
79
+ errorredPages . add ( route . route ) ;
80
+ /** give it a couple of secs */
81
+ await waitForIt ( 3 * 1000 ) ;
82
+ /** retry! */
83
+ return puppeteerRender ( route ) ;
84
+ }
73
85
}
74
86
75
87
return pageHtml ;
Original file line number Diff line number Diff line change @@ -20,7 +20,7 @@ const {baseFilter} = yargs
20
20
. describe ( 'bf' , 'provide a minimatch glob for the unhandled routes' ) . argv ;
21
21
22
22
console . log ( baseFilter ) ;
23
- export const generateAll = async ( config ?: Partial < ScullyConfig > ) => {
23
+ export const generateAll = async ( config ?: Partial < ScullyConfig > , localBaseFilter = baseFilter ) => {
24
24
if ( config ) {
25
25
await updateScullyConfig ( config ) ;
26
26
}
@@ -36,10 +36,13 @@ export const generateAll = async (config?: Partial<ScullyConfig>) => {
36
36
37
37
log ( 'Pull in data to create additional routes.' ) ;
38
38
const handledRoutes = await addOptionalRoutes (
39
- unhandledRoutes . filter ( ( r : string ) => r && r . startsWith ( baseFilter ) )
39
+ unhandledRoutes . filter ( ( r : string ) => r && r . startsWith ( localBaseFilter ) )
40
40
) ;
41
41
/** save routerinfo, so its available during rendering */
42
- await storeRoutes ( handledRoutes ) ;
42
+ if ( localBaseFilter === '' ) {
43
+ /** only store when the routes are complete */
44
+ await storeRoutes ( handledRoutes ) ;
45
+ }
43
46
44
47
/** launch the browser, its shared among renderers */
45
48
const browser = await launchedBrowser ( ) ;
You can’t perform that action at this time.
0 commit comments