From e17ef6dba04dc0ec57d9d47f95403b0ce1b5b9b1 Mon Sep 17 00:00:00 2001 From: "yanlong.wang" Date: Thu, 11 Apr 2024 18:28:51 +0800 Subject: [PATCH] fix --- backend/functions/.puppeteerrc.cjs | 13 +++++++++---- backend/functions/package.json | 2 +- backend/functions/src/index.ts | 2 ++ backend/functions/src/services/puppeteer.ts | 19 +++++++++---------- 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/backend/functions/.puppeteerrc.cjs b/backend/functions/.puppeteerrc.cjs index 0e5c8c4..b6285cc 100644 --- a/backend/functions/.puppeteerrc.cjs +++ b/backend/functions/.puppeteerrc.cjs @@ -1,9 +1,14 @@ const {join} = require('path'); +let config = {}; +if (!process.env.FUNCTIONS_EMULATOR) { + config = { + // Changes the cache location for Puppeteer. + cacheDirectory: join(__dirname, '.cache', 'puppeteer'), + }; +} + /** * @type {import("puppeteer").Configuration} */ -module.exports = { - // Changes the cache location for Puppeteer. - cacheDirectory: join(__dirname, '.cache', 'puppeteer'), -}; +module.exports = config; diff --git a/backend/functions/package.json b/backend/functions/package.json index 943c6a0..b7c3371 100644 --- a/backend/functions/package.json +++ b/backend/functions/package.json @@ -19,7 +19,7 @@ "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log", - "gcp-build": "node node_modules/puppeteer/install.js" + "gcp-build": "node node_modules/puppeteer/install.mjs" }, "engines": { "node": "20" diff --git a/backend/functions/src/index.ts b/backend/functions/src/index.ts index 1d16fa8..9812113 100644 --- a/backend/functions/src/index.ts +++ b/backend/functions/src/index.ts @@ -30,3 +30,5 @@ Object.assign(exports, registry.exportGrouped({ })); registry.title = 'url2text'; registry.version = '0.1.0'; + +process.on('unhandledRejection', () => 'no big deal'); diff --git a/backend/functions/src/services/puppeteer.ts b/backend/functions/src/services/puppeteer.ts index a079fbc..fde7e7a 100644 --- a/backend/functions/src/services/puppeteer.ts +++ b/backend/functions/src/services/puppeteer.ts @@ -1,4 +1,4 @@ -import { AsyncService, Defer, HashManager, marshalErrorLike } from 'civkit'; +import { AssertionFailureError, AsyncService, Defer, HashManager, marshalErrorLike } from 'civkit'; import { container, singleton } from 'tsyringe'; import puppeteer, { Browser } from 'puppeteer'; import { Logger } from '../shared/services/logger'; @@ -72,7 +72,6 @@ export class PuppeteerControl extends AsyncService { } this.browser = await puppeteer.launch({ headless: true, - args: ['--no-sandbox', '--disable-setuid-sandbox'], }); this.browser.once('disconnected', () => { this.logger.warn(`Browser disconnected`); @@ -212,20 +211,20 @@ function giveSnapshot() { }); return r; + }).catch((err) => { + this.logger.warn(`Failed to goto ${url}`, { err: marshalErrorLike(err) }); + return Promise.reject(new AssertionFailureError({ + message: `Failed to goto ${url}: ${err}`, + cause: err, + })); + }).finally(() => { + finalized = true; }); - gotoPromise.catch((err) => { - this.logger.warn(`Browsing of ${url} not fully done`, { err: marshalErrorLike(err) }); - }).finally(() => { - finalized = true; - }); - try { while (true) { await Promise.race([nextSnapshotDeferred.promise, gotoPromise]); if (finalized) { - await gotoPromise; - yield { ...snapshot, screenshot }; break; }