electron 电子项目:在编译版本中找不到模块“puppeteer”

5kgi1eie  于 2022-12-16  发布在  Electron
关注(0)|答案(1)|浏览(312)

我最近把crawlee3.0.2添加到一个项目中,这个项目使用标准的 puppet 师设置(有没有 puppet 师额外/隐形)已经运行了几个月了。
在VS代码中调试和运行npm start时,一切都运行良好,但编译后我遇到了一个问题:

Unhandled Exception - Error: Cannot find module 'puppeteer'

我已跟踪此问题,错误似乎来自:
@crawlee\ puppet 师\内部\ puppet 师-发射器.js -第18行:

const { launcher = browser_1.BrowserLauncher.requireLauncherOrThrow('puppeteer', 'apify/actor-node-puppeteer-chrome'), ...browserLauncherOptions }

我不知道如何让crawlee看到安装在项目中的 puppet 师模块。
我不确定这是否相关,但在构建期间,我曾尝试使用WebpackObfuscator和来自已编译ASAR的解包puppeteer,主包.json中有一行:

"build": {
    "asar": true,
    "asarUnpack": [
      "**\\*.{node,dll}",
      "node_modules/puppeteer/.local-chromium/**/*"
    ],


以及

"extraResources": [
      "./assets/**",
      "node_modules/puppeteer"
    ],

我放弃了尝试使用模糊器,但发现为puppeteer传递exectuablePath效果很好,所以我就保持原样(我现在不记得模糊器是否是我最初这样做的唯一原因-我想是为了我可以用打包的chromium分发)。
我注意到了一些奇怪的差异(我对Electron/Node还是个新手,所以请原谅我的无知):
crawlee的package.json列出了puppeteer的依赖项,如下所示:

"peerDependencies": {
        "playwright": "^1.21.1",
        "puppeteer": ">= 9.x <= 14.x"
    },
    "peerDependenciesMeta": {
        "playwright": {
            "optional": true
        },
        "puppeteer": {
            "optional": true
        }
   }

在添加crawlee之前,我使用的是一个独立的puppeteer安装,我相信它比14. x更新,但它仍然在我在构建和测试时已经添加的版本中运行良好。
我尝试安装puppeteer v14(降级),它将主项目package.json更新为

"puppeteer": "^14.4.1",

但是这也没有解决问题,但是,当运行npm view puppeteer version时,不管package.json显示什么,它都显示16.1.0,所以我不能弄清楚实际问题在哪里。
任何关于如何让crawlee在编译版本上看到puppeteer包的建议都将非常感谢。

zzoitvuj

zzoitvuj1#

我找到了一个修复方法,确保在webpack中包含依赖项作为外部项,并在package.json中将相对于package.json的node_modules路径声明为“extraResource”。

相关问题