diff --git a/packages/ui/electron.vite.config.ts b/packages/ui/electron.vite.config.ts index 17a6869..5f4a137 100644 --- a/packages/ui/electron.vite.config.ts +++ b/packages/ui/electron.vite.config.ts @@ -9,7 +9,7 @@ export default defineConfig({ main: { build: { rollupOptions: { - external: ['puppeteer', 'puppeteer-extra', 'puppeteer-extra-plugin-stealth', '@puppeteer/browsers'] + external: ['puppeteer', 'puppeteer-extra', 'puppeteer-extra-plugin-stealth', '@puppeteer/browsers', 'find-chrome-bin'] } }, plugins: [ diff --git a/packages/ui/external-node-runtime-dependencies/index.cjs b/packages/ui/external-node-runtime-dependencies/index.cjs index 9e24482..9a27075 100644 --- a/packages/ui/external-node-runtime-dependencies/index.cjs +++ b/packages/ui/external-node-runtime-dependencies/index.cjs @@ -1,5 +1,6 @@ Object.assign(module.exports, { puppeteerExtra: require('puppeteer-extra'), PuppeteerExtraPluginStealth: require('puppeteer-extra-plugin-stealth'), - puppeteerManager: require('@puppeteer/browsers') -}) \ No newline at end of file + puppeteerManager: require('@puppeteer/browsers'), + findChromeBin: require('find-chrome-bin') +}) diff --git a/packages/ui/external-node-runtime-dependencies/index.mjs b/packages/ui/external-node-runtime-dependencies/index.mjs index fe39faf..844b33d 100644 --- a/packages/ui/external-node-runtime-dependencies/index.mjs +++ b/packages/ui/external-node-runtime-dependencies/index.mjs @@ -1,4 +1,4 @@ export * as puppeteerExtra from 'puppeteer-extra' export * as PuppeteerExtraPluginStealth from 'puppeteer-extra-plugin-stealth' export * as puppeteerManager from '@puppeteer/browsers' - +export * as findChromeBin from 'find-chrome-bin' diff --git a/packages/ui/external-node-runtime-dependencies/package-lock.json b/packages/ui/external-node-runtime-dependencies/package-lock.json index 57a5daa..32b5e73 100644 --- a/packages/ui/external-node-runtime-dependencies/package-lock.json +++ b/packages/ui/external-node-runtime-dependencies/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "@puppeteer/browsers": "^2.0.0", + "find-chrome-bin": "^2.0.1", "puppeteer": "^22.0.0", "puppeteer-extra": "^3.3.6", "puppeteer-extra-plugin-stealth": "^2.11.2" @@ -497,6 +498,37 @@ "pend": "~1.2.0" } }, + "node_modules/find-chrome-bin": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/find-chrome-bin/-/find-chrome-bin-2.0.1.tgz", + "integrity": "sha512-aDwC2y0dLxt0GFmQ+q8bqBCZ10VW9zYT/lNV806tRDqDAh5XpkTWulB96RKDHDuKu36m/dEvhmhD5IU237oOTg==", + "dependencies": { + "@puppeteer/browsers": "^1.8.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/find-chrome-bin/node_modules/@puppeteer/browsers": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/@puppeteer/browsers/-/browsers-1.9.1.tgz", + "integrity": "sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA==", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=16.3.0" + } + }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz", diff --git a/packages/ui/external-node-runtime-dependencies/package.json b/packages/ui/external-node-runtime-dependencies/package.json index 2854680..5ce7f77 100644 --- a/packages/ui/external-node-runtime-dependencies/package.json +++ b/packages/ui/external-node-runtime-dependencies/package.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "@puppeteer/browsers": "^2.0.0", + "find-chrome-bin": "^2.0.1", "puppeteer": "^22.0.0", "puppeteer-extra": "^3.3.6", "puppeteer-extra-plugin-stealth": "^2.11.2" diff --git a/packages/ui/src/main/flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/check-and-locate-existed-chromium-executable.ts b/packages/ui/src/main/flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/check-and-locate-existed-chromium-executable.ts index 6dcdce7..094eae9 100644 --- a/packages/ui/src/main/flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/check-and-locate-existed-chromium-executable.ts +++ b/packages/ui/src/main/flow/CHECK_AND_DOWNLOAD_DEPENDENCIES/check-and-locate-existed-chromium-executable.ts @@ -1,7 +1,23 @@ -import { findChrome } from "find-chrome-bin"; +import { is } from '@electron-toolkit/utils' +import electron from 'electron' import * as os from 'node:os' +import path from 'node:path' export default async function findAndLocateExistedChromiumExecutable() { + let findChrome: typeof import('find-chrome-bin').findChrome + if (is.dev) { + findChrome = (await import('find-chrome-bin')).findChrome + } else { + findChrome = ( + await import( + path.resolve( + electron.app.getAppPath(), + '..', + 'external-node-runtime-dependencies/index.mjs' + ) + ) + ).findChromeBin.findChrome + } // For windows, try to find Edge(chromium) if (os.platform() === 'win32') { // TODO: handle windows