Skip to content

Commit

Permalink
Merge branch 'main' into esm_support
Browse files Browse the repository at this point in the history
  • Loading branch information
jrandolf committed May 3, 2022
2 parents 7a8f9d9 + a414827 commit fbd5b29
Show file tree
Hide file tree
Showing 10 changed files with 25 additions and 28 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/main.yml
Expand Up @@ -19,7 +19,7 @@ jobs:
matrix:
# Include all major maintenance + active LTS + current Node.js versions.
# https://github.com/nodejs/Release#release-schedule
node: [12, 14, 16]
node: [14, 16]
steps:
- name: Checkout
uses: actions/checkout@v3
Expand Down Expand Up @@ -111,7 +111,7 @@ jobs:
with:
# Test only the oldest maintenance LTS Node.js version.
# https://github.com/nodejs/Release#release-schedule
node-version: 12
node-version: 14

- name: Install dependencies
run: |
Expand Down Expand Up @@ -152,7 +152,7 @@ jobs:
with:
# Test only the oldest maintenance LTS Node.js version.
# https://github.com/nodejs/Release#release-schedule
node-version: 12
node-version: 14

- name: Install dependencies
run: |
Expand Down
2 changes: 0 additions & 2 deletions compat/cjs/compat.ts
Expand Up @@ -13,6 +13,4 @@ try {
puppeteerDirname = __dirname;
}

export const rootDirname = dirname(dirname(dirname(puppeteerDirname)));

export { puppeteerDirname };
5 changes: 2 additions & 3 deletions compat/esm/compat.ts
@@ -1,5 +1,6 @@
import { createRequire } from 'module';
import { dirname } from 'path';
import { fileURLToPath } from 'url';

const require = createRequire(import.meta.url);

Expand All @@ -13,9 +14,7 @@ try {
puppeteerDirname = dirname(require.resolve('./compat'));
} catch (error) {
// Fallback to __dirname.
puppeteerDirname = __dirname;
puppeteerDirname = dirname(fileURLToPath(import.meta.url));
}

export const rootDirname = dirname(dirname(dirname(puppeteerDirname)));

export { puppeteerDirname };
6 changes: 3 additions & 3 deletions docs/troubleshooting.md
Expand Up @@ -156,7 +156,7 @@ If you get an error that looks like this when trying to launch Chromium:
spawn /Users/.../node_modules/puppeteer/.local-chromium/mac-756035/chrome-mac/Chromium.app/Contents/MacOS/Chromium ENOENT
```

This means that the browser was downloaded but failed to be extracted correctly. The most common cause is a bug in Node.js v14.0.0 which broke `extract-zip`, the module Puppeteer uses to extract browser downloads into the right place. The bug was fixed in Node.js v14.1.0, so please make sure you're running that version or higher. Alternatively, if you cannot upgrade, you could downgrade to Node.js v12, but we recommend upgrading when possible.
This means that the browser was downloaded but failed to be extracted correctly. The most common cause is a bug in Node.js v14.0.0 which broke `extract-zip`, the module Puppeteer uses to extract browser downloads into the right place. The bug was fixed in Node.js v14.1.0, so please make sure you're running that version or higher.

## Setting Up Chrome Linux Sandbox

Expand Down Expand Up @@ -242,7 +242,7 @@ Running Puppeteer smoothly on CircleCI requires the following steps:
like so:
```yaml
docker:
- image: circleci/node:12 # Use your desired version
- image: circleci/node:14 # Use your desired version
environment:
NODE_ENV: development # Only needed if puppeteer is in `devDependencies`
```
Expand Down Expand Up @@ -277,7 +277,7 @@ To fix, you'll need to install the missing dependencies and the
latest Chromium package in your Dockerfile:

```Dockerfile
FROM node:12-slim
FROM node:14-slim

# Install latest chrome dev package and fonts to support major charsets (Chinese, Japanese, Arabic, Hebrew, Thai and a few others)
# Note: this installs the necessary libs to make the bundled version of Chromium that Puppeteer
Expand Down
4 changes: 2 additions & 2 deletions package.json
Expand Up @@ -23,7 +23,7 @@
"types": "lib/types.d.ts",
"repository": "github:puppeteer/puppeteer",
"engines": {
"node": ">=10.18.1"
"node": ">=14.1.0"
},
"scripts": {
"test-browser": "wtr",
Expand Down Expand Up @@ -126,7 +126,7 @@
"jpeg-js": "0.4.3",
"mime": "3.0.0",
"minimist": "1.2.6",
"mocha": "9.2.2",
"mocha": "10.0.0",
"ncp": "2.0.0",
"pixelmatch": "5.3.0",
"pngjs": "6.0.0",
Expand Down
2 changes: 1 addition & 1 deletion scripts/test-install.sh
Expand Up @@ -22,7 +22,7 @@ ls $TMPDIR/node_modules/puppeteer/.local-chromium/
# Testing ES module features
TMPDIR="$(mktemp -d)"
cd $TMPDIR
echo '{"type":"module"}' >>$TMPDIR/package.json
echo '{"type":"module"}' >> $TMPDIR/package.json
npm install --loglevel silent "${tarball}"
node --input-type="module" --eval="import puppeteer from 'puppeteer'"
node --input-type="module" --eval="
Expand Down
3 changes: 1 addition & 2 deletions src/compat.ts
@@ -1,4 +1,3 @@
declare const puppeteerDirname: string;
declare const rootDirname: string;

export { puppeteerDirname, rootDirname };
export { puppeteerDirname };
8 changes: 8 additions & 0 deletions src/constants.ts
@@ -0,0 +1,8 @@
import { readFileSync } from 'fs';
import { dirname, join } from 'path';
import { puppeteerDirname } from './compat.js';

export const rootDirname = dirname(dirname(dirname(puppeteerDirname)));
export const packageVersion = JSON.parse(
readFileSync(join(rootDirname, 'package.json'), { encoding: 'utf8' })
).version;
4 changes: 2 additions & 2 deletions src/initialize-node.ts
Expand Up @@ -18,10 +18,10 @@ import { PuppeteerNode } from './node/Puppeteer.js';
import { PUPPETEER_REVISIONS } from './revisions.js';
import { sync } from 'pkg-dir';
import { Product } from './common/Product.js';
import { puppeteerDirname } from './compat.js';
import { rootDirname } from './constants.js';

export const initializePuppeteerNode = (packageName: string): PuppeteerNode => {
const puppeteerRootDirectory = sync(puppeteerDirname);
const puppeteerRootDirectory = sync(rootDirname);
let preferredRevision = PUPPETEER_REVISIONS.chromium;
const isPuppeteerCore = packageName === 'puppeteer-core';
// puppeteer-core ignores environment variables
Expand Down
13 changes: 3 additions & 10 deletions src/node/NodeWebSocketTransport.ts
Expand Up @@ -13,16 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { ConnectionTransport } from '../common/ConnectionTransport.js';
import NodeWebSocket from 'ws';
import { readFileSync } from 'fs';
import { join } from 'path';
import { rootDirname } from '../compat.js';

// We parse rather than import for ES module compatibility.
const version = JSON.parse(
readFileSync(join(rootDirname, 'package.json'), { encoding: 'utf8' })
).version;
import { ConnectionTransport } from '../common/ConnectionTransport.js';
import { packageVersion } from '../constants.js';

export class NodeWebSocketTransport implements ConnectionTransport {
static create(url: string): Promise<NodeWebSocketTransport> {
Expand All @@ -32,7 +25,7 @@ export class NodeWebSocketTransport implements ConnectionTransport {
perMessageDeflate: false,
maxPayload: 256 * 1024 * 1024, // 256Mb
headers: {
'User-Agent': `Puppeteer ${version}`,
'User-Agent': `Puppeteer ${packageVersion}`,
},
});

Expand Down

0 comments on commit fbd5b29

Please sign in to comment.