Open
Description
Describe the bug
we have a CRA app, it used to build with Node 14.x very fine, today I upgrade nodejs to 17.0.0 and it failed. (in both my local machine and the CI-CD machine)
And these were the logs:
> react-scripts build
Creating an optimized production build...
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:67:19)
at Object.createHash (node:crypto:130:10)
at module.exports (/my-project/node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (/my-project/node_modules/webpack/lib/NormalModule.js:417:16)
at handleParseError (/my-project/node_modules/webpack/lib/NormalModule.js:471:10)
at /my-project/node_modules/webpack/lib/NormalModule.js:503:5
at /my-project/node_modules/webpack/lib/NormalModule.js:358:12
at /my-project/node_modules/loader-runner/lib/LoaderRunner.js:373:3
at iterateNormalLoaders (/my-project/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
at iterateNormalLoaders (/my-project/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
at /my-project/node_modules/loader-runner/lib/LoaderRunner.js:236:3
at runSyncOrAsync (/my-project/node_modules/loader-runner/lib/LoaderRunner.js:130:11)
at iterateNormalLoaders (/my-project/node_modules/loader-runner/lib/LoaderRunner.js:232:2)
at Array.<anonymous> (/my-project/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
at Storage.finished (/my-project/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16)
at /my-project/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9
/my-project/node_modules/react-scripts/scripts/build.js:19
throw err;
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:67:19)
at Object.createHash (node:crypto:130:10)
at module.exports (/my-project/node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (/my-project/node_modules/webpack/lib/NormalModule.js:417:16)
at /my-project/node_modules/webpack/lib/NormalModule.js:452:10
at /my-project/node_modules/webpack/lib/NormalModule.js:323:13
at /my-project/node_modules/loader-runner/lib/LoaderRunner.js:367:11
at /my-project/node_modules/loader-runner/lib/LoaderRunner.js:233:18
at context.callback (/my-project/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
at /my-project/node_modules/babel-loader/lib/index.js:59:103 {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
Node.js v17.0.0
ERROR: Job failed: exit status 1
Did you try recovering your dependencies?
yes. in both local machine and CI-CD machine I re-installed all the dependencies
Which terms did you search for in User Guide?
I searched Google for error:0308010C:digital envelope routines::unsupported
with and without the 0308010C
part
Environment
current version of create-react-app: 4.0.3
running from /home/.npm/_npx/34113/lib/node_modules/create-react-app
System:
OS: Linux 5.13 Ubuntu 21.10 21.10 (Impish Indri)
CPU: (4) x64 Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz
Binaries:
Node: 17.0.0 - /usr/bin/node
Yarn: Not Found
npm: 8.1.0 - /usr/bin/npm
Browsers:
Chrome: 95.0.4638.54
Firefox: 93.0
npmPackages:
react: ^16.13.1 => 16.13.1
react-dom: ^16.13.1 => 16.13.1
react-scripts: ^4.0.3 => 4.0.3
npmGlobalPackages:
create-react-app: Not Found
Steps to reproduce
(Write your steps here:)
- create new react app with create-react-app and node 14
- do
npm run build
to see it builds completely fine - upgrade to node 17 and do
npm run build
again to see it fail
Expected behavior
to build flawlessly
Actual behavior
The build failed with errors printed above!
Note
I know that it is mostly not related to create-react-app, but another package, maybe webpack or it's dependencies. But as I cannot dig down, I write this issue here so the professionals can track it further.
Thanks
Activity
Gnito commentedon Oct 20, 2021
This looks like a relevant discussion related to this issue:
https://stackoverflow.com/questions/69394632/webpack-build-failing-with-err-ossl-evp-unsupported
niels-bosman commentedon Oct 20, 2021
Having the same issue. Node
16.11.1
works but17.0.0
and17.0.1
are causing this error.aghArdeshir commentedon Oct 20, 2021
Yes @Gnito that's it I think. So it is probably either Webpack's to update something, or react-scripts' to change some config, right?
trashcoder commentedon Oct 22, 2021
in your package.json:
change this line
"build": "react-scripts start",
to
"build": "react-scripts --openssl-legacy-provider build",
dantman commentedon Oct 25, 2021
Doing this results in a
bad option: --openssl-legacy-provider
error in Node 16. So this isn't a workaround projects can actually use in theirscripts
unless they have absolute control over the version of Node everyone uses and can prohibit use of LTS versions by anyone.The only real fix will likely be the release of CRA v5.
dantman commentedon Oct 26, 2021
Actually it seems that this won't necessarily fix the issue alone. WebPack does plan to change the default hash function in WebPack 6 but cannot change it in 4 or 5.
CRA needs to change the
hashFunction
and make a release. Though given CRA v4 hasn't received an update since Feb and CRA has other issues with Node 17 (#11565) I presume we'll only get that fix in CRA v5,niels-bosman commentedon Nov 1, 2021
Could be fixed by #11597
HADMARINE commentedon Nov 1, 2021
Merged #11597 just before, and currently testing on local computer.
--openssl-legacy-provider
flag for node dehydr8/elevation-of-privilege#16043 remaining items