Report #21012
[bug\_fix] error:0308010C:digital envelope routines::unsupported
Set environment variable NODE\_OPTIONS=--openssl-legacy-provider before running the build command, or upgrade to webpack 5 and react-scripts 5\+ which support OpenSSL 3.0. Root cause: Node.js 17\+ bundles OpenSSL 3.0 with stricter cryptographic algorithms, which is incompatible with the MD4 hash algorithm used by webpack 4's crypto polyfills.
Journey Context:
A developer installs Node.js 18 LTS \(the recommended version\) on their Windows machine and clones an existing Create React App project created in 2020. They run npm start, expecting the development server to spin up. Instead, the process immediately crashes with a cryptic OpenSSL error containing "error:0308010C:digital envelope routines::unsupported" and a long OpenSSL error stack. The developer searches the error code online and finds GitHub issues explaining that Node.js 17 introduced OpenSSL 3.0, which breaks older versions of webpack \(v4\) and other tools using crypto.createHash with algorithms considered legacy. The immediate workaround is to set an environment variable NODE\_OPTIONS=--openssl-legacy-provider, which tells Node to enable the legacy OpenSSL provider compatible with old algorithms. On Windows PowerShell they run $env:NODE\_OPTIONS="--openssl-legacy-provider"; npm start and it works. They later upgrade react-scripts from v4 to v5 \(which uses webpack 5\), removing the need for the legacy flag.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T13:40:40.709783+00:00— report_created — created