addyosmani/critical

critical does not work with a remote browser

开放

#376 创建于 2019年6月12日

 (7 条评论) (0 个反应) (0 位负责人)JavaScript (457 个派生)batch import
enhancementhelp wanted

仓库指标

星标
 (9,902 个星标)
PR 合并指标
 (30 天内没有已合并 PR)

描述

Running something like this doesn't work.

const browser = puppeteer.connect({
    browserWSEndpoint: 'ws://127.0.0.1:3000',
});

critical.generate({
    src: 'https://www.google.com/',
    penthouse: {
        puppeteer: {
            getBrowser: () => browser,
        },
    },
});

This results in an error.

{
    "errorMessage": "Protocol error (Page.navigate): Cannot navigate to invalid URL",
    "errorType": "Error",
    "stackTrace": [
        "Error: Protocol error (Page.navigate): Cannot navigate to invalid URL",
        "at Promise (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\Connection.js:185:56)",
        "at new Promise (<anonymous>)",
        "at CDPSession.send (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\Connection.js:184:12)",
        "at navigate (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\FrameManager.js:119:39)",
        "at FrameManager.navigateFrame (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\FrameManager.js:96:7)",
        "at Frame.goto (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\FrameManager.js:407:37)",
        "at Frame.<anonymous> (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\helper.js:111:23)",
        "at Page.goto (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\Page.js:629:49)",
        "at Page.<anonymous> (C:\\Users\\user\\Projects\\project\\node_modules\\puppeteer-core\\lib\\helper.js:111:23)",
        "at loadPage (C:\\Users\\user\\Projects\\project\\node_modules\\penthouse\\lib\\core.js:54:30)",
        "at Promise (C:\\Users\\user\\Projects\\project\\node_modules\\penthouse\\lib\\core.js:384:29)",
        "at process._tickCallback (internal/process/next_tick.js:68:7)"
    ]
}

It tries to connect to 'file://C:\\Users\\user\\AppData\\Local\\Temp\\6df8ea397e6c2d676ff1b27a1e00f391\\79f06439b62759c632b77f71ef3d3cd0.html'.

Would it somehow be possible to get this working using a remote browser? I'm running a headless chrome instance in a docker container which I let puppeteer connect to and it obviously can't connect to a local temp file.

贡献者指南