运行 npm start 一直显示错误
Posted
技术标签:
【中文标题】运行 npm start 一直显示错误【英文标题】:running npm start keeps showing errors 【发布时间】:2021-12-20 09:49:33 【问题描述】:每次我尝试在我的 windows powershell 上为我的 react 项目运行 npm start 时,它都会不断向我显示错误
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'
还有那个reason: 'unsupported'是什么意思?
【问题讨论】:
您使用的是什么版本的 Node.js?你在使用 Webpack 来构建你的项目吗?如果您提供更多信息,将更容易获得问题的答案。 【参考方案1】:如果您使用的是 Webpack(从他们的堆栈跟踪中看来 OP 正在使用它)和 Node 17,则存在一些兼容性问题。从 OpenSSL 1.1 到 3.0 的节点 17 changed,并且有一些重大更改导致 Webpack 中的错误。这个问题似乎有几个解决方案。
选项 1:更新 Webpack。
5.61.0 版本修复了这个错误。 这是最简单的解决方案。
如果您使用的是 Webpack 4,开发人员有 no intention 为该版本创建错误修复。您必须更新到版本 5 或使用下面的选项 3/4。
选项 2:更新 webpack.config.js
。
对于webpack>=5.54
,您可以手动将散列算法更改为适用于 OpenSSL 3.0 的算法。
module.exports =
output:
hashFunction: 'xxhash64'
选项 3:降级节点。
更改为 Node 的 LTS 版本(当前为 16.x)应该 resolve 现在是问题所在。然而,这并不能解决问题,它只会延迟问题。
选项 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 start
【讨论】:
以上是关于运行 npm start 一直显示错误的主要内容,如果未能解决你的问题,请参考以下文章
我试图运行命令“npm run start”,它在 react js 中显示了这个错误
每次我运行 npx create-react-app my-app 时,它都会在 npm start 后显示这个 html webpack 错误