执行npx cdk deploy部署React应用时报ERR_OSSL_EVP_UNSUPPORTED如何解决?
Node环境运行CDK部署报错(ERR_OSSL_EVP_UNSUPPORTED)解决方案
我发布这篇内容是希望能帮其他人避开我遇到的这些头大的踩坑经历。
今天我尝试运行npx cdk deploy时遇到了如下错误:
npx cdk deploy
[12:19:19] Bundling asset ApplicationStack/WebApp/WebAppDeploy/WebAppDeploy/Asset1/Stage... yarn run v1.22.15 warning Skipping preferred cache folder "/.cache/yarn" because it is not writable. warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-501".
$ react-scripts build
warning Cannot find a suitable global folder. Tried these: "/usr/local, /.yarn" 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 (/asset-input/node_modules/webpack/lib/util/createHash.js:135:53) at NormalModule._initBuildHash (/asset-input/node_modules/webpack/lib/NormalModule.js:417:16) at handleParseError (/asset-input/node_modules/webpack/lib/NormalModule.js:471:10) at /asset-input/node_modules/webpack/lib/NormalModule.js:503:5 at /asset-input/node_modules/webpack/lib/NormalModule.js:358:12 at /asset-input/node_modules/loader-runner/lib/LoaderRunner.js:373:3 at iterateNormalLoaders (/asset-input/node_modules/loader-runner/lib/LoaderRunner.js:214:10) at iterateNormalLoaders (/asset-input/node_modules/loader-runner/lib/LoaderRunner.js:221:10) at /asset-input/node_modules/loader-runner/lib/LoaderRunner.js:236:3 at runSyncOrAsync (/asset-input/node_modules/loader-runner/lib/LoaderRunner.js:130:11) at iterateNormalLoaders (/asset-input/node_modules/loader-runner/lib/LoaderRunner.js:232:2) at Array.<anonymous> (/asset-input/node_modules/loader-runner/lib/LoaderRunner.js:205:4) at Storage.finished (/asset-input/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16) at /asset-input/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9 asset-input/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 (/asset-input/node_modules/webpack/lib/util/createHash.js:135:53) at NormalModule._initBuildHash (/asset-input/node_modules/webpack/lib/NormalModule.js:417:16) at /asset-input/node_modules/webpack/lib/NormalModule.js:452:10 at /asset-input/node_modules/webpack/lib/NormalModule.js:323:13 at /asset-input/node_modules/loader-runner/lib/LoaderRunner.js:367:11 at /asset-input/node_modules/loader-runner/lib/LoaderRunner.js:233:18 at context.callback (/asset-input/node_modules/loader-runner/lib/LoaderRunner.js:111:13) at /asset-input/node_modules/react-scripts/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.1 error Command failed with exit code 1. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. Failed to bundle asset ApplicationStack/WebApp/WebAppDeploy/WebAppDeploy/Asset1/Stage, bundle output is located at /Users/[my user]/PycharmProjects/ps-serverless-app/infrastructure/cdk.out/asset.8c7ae86f7dabf723a79310f22f328c471bdaec37da5325cd834784dc03a40eff-error: Error: docker exited with status 1 Subprocess exited with error 1 FAIL
这个错误一开始让人很困惑,因为我本地使用的node版本是v16.13.0,排查后发现只要将npm升级到v8.1.3就会触发这个问题。
问题的根源和框架尝试调用MD4算法有关。
我找到的这个方案亲测可以完美解决问题,本来想给提供方案的用户留言致谢,可惜我的平台声望不够没法评论,所以在这里特别感谢他的分享。
具体操作方法如下:
将以下代码添加到node_modules\react-scripts\config\webpack.config.js文件中即可解决该问题:
const crypto = require("crypto"); const crypto_orig_createHash = crypto.createHash; crypto.createHash = algorithm => crypto_orig_createHash(algorithm == "md4" ? "sha256" : algorithm);
内容的提问来源于stack exchange,提问作者Ben Wilkens
相关产品推荐
相关产品推荐

