From c2c2bb7e558cc0dfd2a6a7976891131f68e5a2c9 Mon Sep 17 00:00:00 2001 From: Jack Franklin Date: Mon, 19 Oct 2020 09:57:15 +0100 Subject: [PATCH] chore(agnostification): common/helper.ts (#6515) * chore(agnostification): common/helper.ts The `readProtocolStream` method uses `fs` only if you want to write to a file. So we gate at the start of the function and ensure that if we got given a path we are not in a Node environment. --- .travis.yml | 2 ++ package.json | 2 +- src/common/helper.ts | 17 +++++++++++++---- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 30b3fc31ce2..8fb8b9b2912 100644 --- a/.travis.yml +++ b/.travis.yml @@ -59,6 +59,8 @@ jobs: - node_js: "12.16.3" name: 'Browser tests: Linux/Chromium' + addons: + chrome: stable env: - CHROMIUM=true script: diff --git a/package.json b/package.json index 3a2a4cb3973..a0e8204581d 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "@types/ws": "^7.2.4", "@typescript-eslint/eslint-plugin": "^4.4.0", "@typescript-eslint/parser": "^4.4.0", - "@web/test-runner": "^0.8.4", + "@web/test-runner": "^0.9.2", "commonmark": "^0.28.1", "cross-env": "^7.0.2", "dependency-cruiser": "^9.7.0", diff --git a/src/common/helper.ts b/src/common/helper.ts index fd2e8190efc..dc6655d240b 100644 --- a/src/common/helper.ts +++ b/src/common/helper.ts @@ -15,11 +15,11 @@ */ import { TimeoutError } from './Errors.js'; import { debug } from './Debug.js'; -import * as fs from 'fs'; import { CDPSession } from './Connection.js'; import { Protocol } from 'devtools-protocol'; import { CommonEventEmitter } from './EventEmitter.js'; import { assert } from './assert.js'; +import { isNode } from '../environment.js'; export const debugError = debug('puppeteer:error'); @@ -309,9 +309,16 @@ async function readProtocolStream( handle: string, path?: string ): Promise { + if (!isNode && path) { + throw new Error('Cannot write to a path outside of Node.js environment.'); + } + + const fs = isNode ? await import('fs') : null; + let eof = false; - let fileHandle: fs.promises.FileHandle; - if (path) { + let fileHandle: import('fs').promises.FileHandle; + + if (path && fs) { fileHandle = await fs.promises.open(path, 'w'); } const bufs = []; @@ -323,7 +330,9 @@ async function readProtocolStream( response.base64Encoded ? 'base64' : undefined ); bufs.push(buf); - if (path) await fs.promises.writeFile(fileHandle, buf); + if (path && fs) { + await fs.promises.writeFile(fileHandle, buf); + } } if (path) await fileHandle.close(); await client.send('IO.close', { handle });