Environment:Puppeteer Puppeteer Node 18 Runtime
| Knowledge Sources | |
|---|---|
| Domains | Infrastructure, Browser_Automation |
| Last Updated | 2026-02-11 23:30 GMT |
Overview
Node.js >= 18 runtime environment with TypeScript 4.7.4+ targeting ES2022, required for all Puppeteer packages.
Description
Puppeteer requires Node.js version 18 or later, following the Node.js LTS release schedule. The project is built with TypeScript 5.8.3 and targets ES2022 module output. All three main packages (puppeteer, puppeteer-core, and @puppeteer/browsers) enforce this minimum through their `engines` field in `package.json`.
Usage
This environment is required for any use of Puppeteer, whether launching browsers, connecting to existing instances, or managing browser installations. It applies to all workflows: screenshot capture, PDF generation, web scraping, request interception, and cross-browser automation.
System Requirements
| Category | Requirement | Notes |
|---|---|---|
| Runtime | Node.js >= 18 | Follows Node.js LTS schedule |
| Language | TypeScript >= 4.7.4 | Only if using TypeScript; target ES2022 or later |
| Module System | ES2022 modules | Uses `moduleResolution: Bundler` |
| Package Manager | npm, yarn, or pnpm | Standard Node.js package managers |
Dependencies
Core Packages
- `puppeteer` = 24.37.2 — Full Puppeteer package (auto-downloads browser)
- `puppeteer-core` = 24.37.2 — Core library without browser download
- `@puppeteer/browsers` = 2.12.0 — Browser management CLI and API
Key Runtime Dependencies
- `chromium-bidi` = 14.0.0 — WebDriver BiDi protocol implementation
- `devtools-protocol` = 0.0.1566079 — Chrome DevTools Protocol types
- `ws` >= 8.19.0 — WebSocket client for browser communication
- `cosmiconfig` >= 9.0.0 — Configuration file loading (puppeteer package only)
- `debug` >= 4.4.3 — Debug logging utility
- `extract-zip` >= 2.0.1 — Archive extraction for browser downloads
- `proxy-agent` >= 6.5.0 — HTTP/HTTPS proxy support for downloads
- `typed-query-selector` >= 2.12.0 — Type-safe DOM query selectors
Credentials
No credentials are required for the base runtime. See Environment:Puppeteer_Puppeteer_Configuration_Environment_Variables for optional configuration variables.
Quick Install
# Install Puppeteer (auto-downloads Chrome for Testing)
npm install puppeteer
# Or install puppeteer-core only (no browser download)
npm install puppeteer-core
Code Evidence
Engine constraint from `packages/puppeteer/package.json:35-37`:
"engines": {
"node": ">=18"
}
TypeScript target from `tsconfig.base.json:30`:
{
"compilerOptions": {
"target": "ES2022",
"module": "ES2022",
"moduleResolution": "Bundler",
"strict": true
}
}
Pinned browser versions from `packages/puppeteer-core/src/revisions.ts:10-14`:
export const PUPPETEER_REVISIONS = Object.freeze({
chrome: '145.0.7632.46',
'chrome-headless-shell': '145.0.7632.46',
firefox: 'stable_147.0.3',
});
Common Errors
| Error Message | Cause | Solution |
|---|---|---|
| `Unsupported engine: node` | Node.js version < 18 | Upgrade to Node.js 18 or later |
| `SyntaxError: Unexpected token` | TypeScript target too old | Set `target: "ES2022"` in tsconfig.json |
| `Cannot find module` | Missing dependencies | Run `npm install` to install all dependencies |
Compatibility Notes
- Node.js 18+: All Puppeteer packages require Node.js 18 as the minimum version. Node.js 16 and earlier are not supported.
- TypeScript: Optional, but if used must be >= 4.7.4 with ES2022 target. The project itself uses TypeScript 5.8.3.
- ESM/CJS: Puppeteer ships both ESM and CommonJS builds. ESM is the primary format.
- Browser Environment: `puppeteer-core` has a browser-specific entry point (`index-browser.ts`) with limited functionality for use in browser extensions.
Related Pages
- Implementation:Puppeteer_Puppeteer_PuppeteerNode_Launch
- Implementation:Puppeteer_Puppeteer_Browser_NewPage
- Implementation:Puppeteer_Puppeteer_Page_Screenshot
- Implementation:Puppeteer_Puppeteer_Page_Pdf
- Implementation:Puppeteer_Puppeteer_Frame_Goto
- Implementation:Puppeteer_Puppeteer_Frame_Evaluate
- Implementation:Puppeteer_Puppeteer_Page_SetRequestInterception
- Implementation:Puppeteer_Puppeteer_Install_Function