使用Electron Forge + Vite + Selenium,我在主进程中发生了javaScript错误

问题描述 投票:0回答:1

我正在使用 Selenium 构建 Electron 桌面应用程序。

我用这个命令初始化了我的项目

npm init electron-app@latest my-new-app -- --template=vite-typescript
您也可以查看此链接

我安装了依赖项。

yarn add selenium-webdriver && yarn add -D @types/selenium-webdriver

在我的main.ts文件中,有一段调用Selenium的代码

let driver: WebDriver | null = null
  try {
    const options = new chrome.Options()
    // chrome.setDefaultService(new chrome.ServiceBuilder("/path/to/chromedriver"))

    driver = await new Builder()
      // .setChromeOptions(options)
      .forBrowser(Browser.CHROME)
      .build()

    await driver.get("https://www.google.com")
    await driver.findElement(By.name("q")).sendKeys("webdriver", Key.RETURN)
    await driver.wait(until.titleIs("webdriver - Google Search"), 1000)
  } finally {
    if (driver) {
      await driver.quit()
    }
  }

当我使用selenium而不使用chrome.Options时就可以了

但是当我使用这条线时(

const options = new chrome.Options()
)我收到了这个错误消息。

App threw an error during load
Error: Failed to import atoms module get-attribute.js. If running in dev mode, you need to run `bazel build //javascript/node/selenium-webdriver/lib/atoms:get-attribute.js` from the projectroot: Error: Could not dynamically require "./atoms/get-attribute.js". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.
    at requireAtom (/Users/ittae/GitHub/my-vite-app/.vite/build/main.js:1585:13)
    at Object.<anonymous> (/Users/ittae/GitHub/my-vite-app/.vite/build/main.js:1572:22)
    at Module._compile (node:internal/modules/cjs/loader:1391:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1451:10)
    at Module.load (node:internal/modules/cjs/loader:1214:32)
    at Module._load (node:internal/modules/cjs/loader:1030:12)
    at c._load (node:electron/js2c/node_init:2:13672)
    at cjsLoader (node:internal/modules/esm/translators:360:17)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:305:7)
    at ModuleJob.run (node:internal/modules/esm/module_job:218:25)

所以我不能使用 chrome.Options、chrome.ServiceBuilder

我不知道这个错误是从哪里来的? Vite、硒、电子?

如何解决这个问题?

我将项目移至 Webpack 而不是 Vite。但在这种情况下,如果没有 chromedriver,它就无法工作。

我将 chromedriver 添加到 /usr/local/bin 但 webpack 项目找不到 chromedriver。但我会尝试在Webpack环境中解决它。

selenium-webdriver webpack electron vite electron-forge
1个回答
0
投票

终于找到解决办法了。

打开

vite.main.config.ts
文件。有一个
config:UserConfig
变量。

向该变量添加一个变量。

像这样:

const config: UserConfig = {
    build: {
      lib: {
        entry: forgeConfigSelf.entry!,
        fileName: () => '[name].js',
        formats: ['cjs'],
      },
      rollupOptions: {
        external,
      },
      commonjsOptions: {
        dynamicRequireTargets: ['node_modules/selenium-webdriver/lib/atoms/*'],
      },
    },
}
© www.soinside.com 2019 - 2024. All rights reserved.