运行前端时遇到报错
E:\vue-kwan-admin>npm run serve > kwan@0.1.0 serve > vue-cli-service serve --port 3001 INFO Starting development server... 10% building 2/2 modules 0 activeError: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:68:19) at Object.createHash (node:crypto:138:10) at module.exports (E:\vue-kwan-admin\node_modules\webpack\lib\util\createHash.js:135:53) at NormalModule._initBuildHash (E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:417:16) at handleParseError (E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:471:10) at E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:503:5 at E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:358:12 at E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:373:3 at iterateNormalLoaders (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:214:10) at iterateNormalLoaders (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:221:10) at E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:236:3 at runSyncOrAsync (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:130:11) at iterateNormalLoaders (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:232:2) at Array.<anonymous> (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:205:4) at Storage.finished (E:\vue-kwan-admin\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16) at E:\vue-kwan-admin\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9 10% building 2/5 modules 3 active E:\vue-kwan-admin\node_modules\webpack\hot\dev-server.jsnode:internal/crypto/hash:68 this[kHandle] = new _Hash(algorithm, xofLen); ^ Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:68:19) at Object.createHash (node:crypto:138:10) at module.exports (E:\vue-kwan-admin\node_modules\webpack\lib\util\createHash.js:135:53) at NormalModule._initBuildHash (E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:417:16) at handleParseError (E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:471:10) at E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:503:5 at E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:358:12 at E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:373:3 at iterateNormalLoaders (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:214:10) at Array.<anonymous> (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:205:4) at Storage.finished (E:\vue-kwan-admin\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16) at E:\vue-kwan-admin\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9 at E:\vue-kwan-admin\node_modules\graceful-fs\graceful-fs.js:123:16 at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read/context:68:3) { opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ], library: 'digital envelope routines', reason: 'unsupported', code: 'ERR_OSSL_EVP_UNSUPPORTED' } Node.js v20.10.0
原因
遇到的错误 Error: error:0308010C:digital envelope routines::unsupported
是在使用 Node.js 版本 17 及更高版本时常见的问题。这个问题通常与 Node.js 处理加密操作的方式有关,因为底层的 OpenSSL 库发生了变化。
在 Node.js 版本 17 及以上中,默认禁用了某些加密算法,这可能导致与一些期望使用这些算法的模块或应用程序的兼容性问题。
解决(通过第一个选项成功解决)
为了解决这个问题,有几个选项:
- 设置
NODE_OPTIONS
环境变量:可以通过设置NODE_OPTIONS
环境变量来配置 Node.js,以允许这些旧的算法。在运行应用程序之前,可以在命令行中进行此设置。例如:
set NODE_OPTIONS=--openssl-legacy-provider npm run serve
- 这会告诉 Node.js 使用 OpenSSL 的旧版提供程序,该提供程序支持可能导致遇到问题的算法。
- 降级 Node.js:如果设置
NODE_OPTIONS
不起作用,或者不愿意使用旧版加密操作提供程序,可以考虑降级到更早的 Node.js 版本(如版本 16),这个版本没有这个问题。 - 更新依赖项:有时更新项目的依赖项可以帮助解决问题,特别是如果这些依赖项已经被修补以适应新版本的 Node.js。运行
npm update
来更新包。 - 检查 Webpack 版本:确保您正在使用与 Node.js 版本兼容的 Webpack 版本。Node.js 和 Webpack 之间的兼容性问题可能导致所遇到的错误。
在做出这些更改后,记得重启开发服务器。如果使用的环境不是本地机器(如持续集成服务器),请确保在那里也应用这些更改。