运行 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 错误

我一直在尝试在我的反应顺风应用程序上运行“npm run build”,它一直在向我显示以下错误

尝试运行 npm start 命令时出错

第一个 Expo 项目在 npm start 后抛出错误

我是nodejs的新手并安装了它。但是 npm start 命令对我来说并不成功。它显示错误