-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Closed
Labels
Description
import { join } from "https://deno.land/std@0.185.0/path/mod.ts";
import { DenoDir } from "https://deno.land/x/deno_cache@0.4.1/deno_dir.ts";
import puppeteer, { BrowserFetcher } from "npm:puppeteer-core@19.11.1";
import { PUPPETEER_REVISIONS } from "npm:puppeteer-core@19.11.1/internal/revisions.js";
// Make sure Chromium is downloaded for use with Puppeteer
const denoDir = new DenoDir(undefined, true);
const fetcher = new BrowserFetcher({ path: join(denoDir.root, "puppeteer") });
const revisions = fetcher.localRevisions();
const revision = PUPPETEER_REVISIONS["chromium"];
let executablePath: string;
if (!revisions.includes(revision)) {
console.log(`Downloading Chromium ${revision}...`);
const r = await fetcher.download(revision);
if (!r) throw new Error("Failed to download Chromium");
executablePath = r.executablePath;
} else {
executablePath = fetcher.revisionInfo(revision).executablePath;
}
// Start puppeteer
const browser = await puppeteer.launch({ headless: "new", executablePath });
const page = await browser.newPage();
await page.goto("https://example.com");
await page.screenshot({ path: "example.png" });
await browser.close();This is the output:
$ deno run -A puppteer.ts
Downloading Chromium 1108766...
error: Uncaught (in promise) ErrorEvent {
[Symbol(kTarget)]: WebSocket {
_events: {
open: [Function: onOpen] {
[Symbol(kIsForOnEventAttribute)]: false,
[Symbol(kListener)]: [Function (anonymous)]
},
error: [Function: onError] {
[Symbol(kIsForOnEventAttribute)]: false,
[Symbol(kListener)]: [Function (anonymous)]
}
},
_eventsCount: 2,
_maxListeners: undefined,
_binaryType: "nodebuffer",
_closeCode: 1006,
_closeFrameReceived: false,
_closeFrameSent: false,
_closeMessage: Buffer(0) [],
_closeTimer: null,
_extensions: {},
_paused: false,
_protocol: "",
_readyState: 3,
_receiver: null,
_sender: null,
_socket: null,
_bufferedAmount: 0,
_isServer: false,
_redirects: 0,
_url: "ws://127.0.0.1:35795/devtools/browser/05527a42-706d-40c8-8c68-5b45551254de",
_originalIpc: false,
_originalSecure: false,
_originalHostOrSocketPath: "127.0.0.1:35795",
_req: null,
[Symbol(kCapture)]: false
},
[Symbol(kType)]: "error",
[Symbol(kError)]: Error: Unexpected server response: 101
at ClientRequest.<anonymous> (file:///home/lucacasonato/.cache/deno/npm/registry.npmjs.org/ws/8.13.0/lib/websocket.js:888:7)
at ClientRequest.emit (ext:deno_node/_events.mjs:379:28)
at ClientRequest._final (ext:deno_node/http.ts:175:14)
at eventLoopTick (ext:core/01_core.js:166:11),
[Symbol(kMessage)]: "Unexpected server response: 101"
}No error should be thrown. It seems likely that this is related to outbound WebSockets in node compat. Do we even support those?
deno 1.33.1 (release, x86_64-unknown-linux-gnu)
danilopolani and digitaldesigndj