首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行npm持续显示错误

运行npm持续显示错误
EN

Stack Overflow用户
提问于 2021-11-06 22:46:22
回答 1查看 456关注 0票数 0

每次我尝试在我的windows powershell上为我的react项目运行npm时,它总是向我显示错误。

代码语言:javascript
复制
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'

的理由是什么:“不受支持的”意味着什么?

EN

回答 1

Stack Overflow用户

发布于 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的哈希算法。

代码语言:javascript
复制
module.exports = {
    output: {
        hashFunction: 'xxhash64'
    }
}

备选方案3:降级节点。

现在,更改为Node的LTS版本(当前为16.x)应该会导致解决问题。然而,这并没有解决问题,它只是拖延了问题。

选项4:更改NODE_OPTIONS

对于使用Node 17的Webpack的任何版本,您都可以设置一个标志以恢复到旧的OpenSSL API。这不太理想,但有效。

代码语言:javascript
复制
# 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 start
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69868503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档