每次我尝试在我的windows powershell上为我的react项目运行npm时,它总是向我显示错误。
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 (C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\webpack\lib\util\createHash.js:135:53)
at NormalModule._initBuildHash (C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\webpack\lib\NormalModule.js:417:16)
at handleParseError (C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\webpack\lib\NormalModule.js:471:10)
at C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\webpack\lib\NormalModule.js:503:5
at C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\webpack\lib\NormalModule.js:358:12
at C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\loader-runner\lib\LoaderRunner.js:373:3
at iterateNormalLoaders (C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
at iterateNormalLoaders (C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\loader-runner\lib\LoaderRunner.js:221:10)
C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\react-scripts\scripts\start.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 (C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\webpack\lib\util\createHash.js:135:53)
at NormalModule._initBuildHash (C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\webpack\lib\NormalModule.js:417:16)
at C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\webpack\lib\NormalModule.js:452:10
at C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\webpack\lib\NormalModule.js:323:13
at C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\loader-runner\lib\LoaderRunner.js:367:11
at C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\loader-runner\lib\LoaderRunner.js:233:18
at context.callback (C:\Users\user\Documents\Fashola\Web-Development\app-project\node_modules\loader-runner\lib\LoaderRunner.js:111:13)
at C:\Users\user\Documents\Fashola\Web-Development\app-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'的理由是什么:“不受支持的”意味着什么?
发布于 2021-11-07 20:48:22
如果您使用Webpack (从他们的堆栈跟踪中看起来OP正在使用)和Node 17,那么就会出现一些兼容性问题。节点17 变化从OpenSSL 1.1到3.0,并且在Webpack中发生了一些破坏,导致了错误。这个问题似乎有几个解决办法。
备选案文1:更新Webpack。
版本5.61.0修复了这个错误。这是最简单的解决方案.
如果您使用Webpack 4,则开发人员可以使用无意图为该版本创建一个bugfix修复程序。您必须更新到版本5或使用下面的选项3/4。
选项2:更新webpack.config.js。
对于webpack>=5.54,您可以手动将散列算法更改为使用OpenSSL 3.0的哈希算法。
module.exports = {
output: {
hashFunction: 'xxhash64'
}
}备选方案3:降级节点。
现在,更改为Node的LTS版本(当前为16.x)应该会导致解决问题。然而,这并没有解决问题,它只是拖延了问题。
选项4:更改NODE_OPTIONS
对于使用Node 17的Webpack的任何版本,您都可以设置一个标志以恢复到旧的OpenSSL API。这不太理想,但有效。
# Works in *nix shells
NODE_OPTIONS='--openssl-legacy-provider' npm start
# ============================
# or (cross-platform solution)
# ============================
# requires installing `cross-env`
npm install -D cross-env
# then...
cross-env NODE_OPTIONS='--openssl-legacy-provider' npm starthttps://stackoverflow.com/questions/69868503
复制相似问题