@@ -51,37 +51,41 @@ export async function GET(req: Request) {
5151 await page . setViewport ( { width : 1600 , height : 900 } ) ;
5252 logger . info ( `[SCREENSHOT] Viewport set successfully` ) ;
5353
54- // Navigate to URL with increased timeout and more reliable wait condition
55- await page . goto ( url , {
56- waitUntil : 'networkidle2' , // 更改为等待网络空闲状态,确保页面完全加载
57- timeout : 90000 , // 增加超时时间到90秒
58- } ) ;
59-
60- // 等待额外的时间让页面完全渲染
61- await page . waitForTimeout ( 8000 ) ; // 增加等待时间到8秒
54+ // Navigate to URL with increased timeout and more reliable wait condition
55+ await page . goto ( url , {
56+ waitUntil : 'networkidle2' , // 更改为等待网络空闲状态,确保页面完全加载
57+ timeout : 90000 , // 增加超时时间到90秒
58+ } ) ;
6259
63- // 尝试等待页面上的内容加载,如果失败也继续处理
64- try {
65- // 等待页面上可能存在的主要内容元素
66- await Promise . race ( [
67- page . waitForSelector ( 'main' , { timeout : 5000 } ) ,
68- page . waitForSelector ( '#root' , { timeout : 5000 } ) ,
69- page . waitForSelector ( '.app' , { timeout : 5000 } ) ,
70- page . waitForSelector ( 'h1' , { timeout : 5000 } ) ,
71- page . waitForSelector ( 'div' , { timeout : 5000 } ) , // 添加更通用的选择器
72- ] ) ;
73- } catch ( waitError ) {
74- // 忽略等待选择器的错误,继续截图
75- logger . info ( 'Unable to find common page elements, continuing with screenshot' ) ;
76- }
60+ // 等待额外的时间让页面完全渲染
61+ await page . waitForTimeout ( 8000 ) ; // 增加等待时间到8秒
62+
63+ // 尝试等待页面上的内容加载,如果失败也继续处理
64+ try {
65+ // 等待页面上可能存在的主要内容元素
66+ await Promise . race ( [
67+ page . waitForSelector ( 'main' , { timeout : 5000 } ) ,
68+ page . waitForSelector ( '#root' , { timeout : 5000 } ) ,
69+ page . waitForSelector ( '.app' , { timeout : 5000 } ) ,
70+ page . waitForSelector ( 'h1' , { timeout : 5000 } ) ,
71+ page . waitForSelector ( 'div' , { timeout : 5000 } ) , // 添加更通用的选择器
72+ ] ) ;
73+ } catch ( waitError ) {
74+ // 忽略等待选择器的错误,继续截图
75+ logger . info (
76+ 'Unable to find common page elements, continuing with screenshot'
77+ ) ;
78+ }
7779
7880 // Take screenshot
7981 logger . info ( `[SCREENSHOT] Taking screenshot` ) ;
8082 const screenshot = await page . screenshot ( {
8183 type : 'png' ,
8284 fullPage : true ,
8385 } ) ;
84- logger . info ( `[SCREENSHOT] Screenshot captured successfully, size: ${ screenshot . length } bytes` ) ;
86+ logger . info (
87+ `[SCREENSHOT] Screenshot captured successfully, size: ${ screenshot . length } bytes`
88+ ) ;
8589
8690 // Clean up
8791 if ( page ) {
@@ -95,12 +99,15 @@ export async function GET(req: Request) {
9599 headers : {
96100 'Content-Type' : 'image/png' ,
97101 'Cache-Control' : 'no-cache, no-store, must-revalidate' ,
98- ' Pragma' : 'no-cache' ,
99- ' Expires' : '0'
102+ Pragma : 'no-cache' ,
103+ Expires : '0' ,
100104 } ,
101105 } ) ;
102106 } catch ( error : any ) {
103- logger . error ( `[SCREENSHOT] Error capturing screenshot: ${ error . message } ` , error ) ;
107+ logger . error (
108+ `[SCREENSHOT] Error capturing screenshot: ${ error . message } ` ,
109+ error
110+ ) ;
104111 logger . error ( `[SCREENSHOT] Error stack: ${ error . stack } ` ) ;
105112
106113 if ( page ) {
@@ -120,13 +127,17 @@ export async function GET(req: Request) {
120127 ) {
121128 try {
122129 if ( browserInstance ) {
123- logger . warn ( `[SCREENSHOT] Resetting browser instance due to protocol error` ) ;
130+ logger . warn (
131+ `[SCREENSHOT] Resetting browser instance due to protocol error`
132+ ) ;
124133 await browserInstance . close ( ) ;
125134 browserInstance = null ;
126135 logger . warn ( `[SCREENSHOT] Browser instance reset successfully` ) ;
127136 }
128137 } catch ( closeBrowserError ) {
129- logger . error ( `[SCREENSHOT] Error closing browser: ${ closeBrowserError . message } ` ) ;
138+ logger . error (
139+ `[SCREENSHOT] Error closing browser: ${ closeBrowserError . message } `
140+ ) ;
130141 }
131142 }
132143
0 commit comments