我有一个现有的项目,我最近安装了一个新的设备。
这是一个Laravel + vue项目。
当我运行npm run watch时,会得到以下错误:
> development
> cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js "--watch"
10% building 1/1 modules 0 active
webpack is watching the files…
10% building 1/3 modules 2 active ...er/index.js??ref--5-4!/var/www/node_modules/sass-loader/lib/loader.js??ref--5-5!/var/www/resources/sass/app.scssError: 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 (/var/www/node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (/var/www/node_modules/webpack/lib/NormalModule.js:417:16)
at handleParseError (/var/www/node_modules/webpack/lib/NormalModule.js:471:10)
at /var/www/node_modules/webpack/lib/NormalModule.js:503:5
at /var/www/node_modules/webpack/lib/NormalModule.js:358:12
at /var/www/node_modules/loader-runner/lib/LoaderRunner.js:373:3
at iterateNormalLoaders (/var/www/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
at iterateNormalLoaders (/var/www/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
at /var/www/node_modules/loader-runner/lib/LoaderRunner.js:236:3
at runSyncOrAsync (/var/www/node_modules/loader-runner/lib/LoaderRunner.js:130:11)
at iterateNormalLoaders (/var/www/node_modules/loader-runner/lib/LoaderRunner.js:232:2)
at /var/www/node_modules/loader-runner/lib/LoaderRunner.js:186:6
at runSyncOrAsync (/var/www/node_modules/loader-runner/lib/LoaderRunner.js:130:11)
at /var/www/node_modules/loader-runner/lib/LoaderRunner.js:178:3
at loadLoader (/var/www/node_modules/loader-runner/lib/loadLoader.js:47:3)
at iteratePitchingLoaders (/var/www/node_modules/loader-runner/lib/LoaderRunner.js:169:2)
at iteratePitchingLoaders (/var/www/node_modules/loader-runner/lib/LoaderRunner.js:165:10)
at /var/www/node_modules/loader-runner/lib/LoaderRunner.js:188:6
at runSyncOrAsync (/var/www/node_modules/loader-runner/lib/LoaderRunner.js:124:12)
at /var/www/node_modules/loader-runner/lib/LoaderRunner.js:178:3
at loadLoader (/var/www/node_modules/loader-runner/lib/loadLoader.js:47:3)
at iteratePitchingLoaders (/var/www/node_modules/loader-runner/lib/LoaderRunner.js:169:2)
at runLoaders (/var/www/node_modules/loader-runner/lib/LoaderRunner.js:365:2)
at NormalModule.doBuild (/var/www/node_modules/webpack/lib/NormalModule.js:295:3)
at NormalModule.build (/var/www/node_modules/webpack/lib/NormalModule.js:446:15)
at Compilation.buildModule (/var/www/node_modules/webpack/lib/Compilation.js:739:10)
at /var/www/node_modules/webpack/lib/Compilation.js:981:14
at /var/www/node_modules/webpack/lib/NormalModuleFactory.js:409:6
at /var/www/node_modules/webpack/lib/NormalModuleFactory.js:155:13
at AsyncSeriesWaterfallHook.eval [as callAsync] (eval at create (/var/www/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)
at /var/www/node_modules/webpack/lib/NormalModuleFactory.js:138:29
at /var/www/node_modules/webpack/lib/NormalModuleFactory.js:346:9
at processTicksAndRejections (node:internal/process/task_queues:78:11)
node:internal/crypto/hash:67
this[kHandle] = new _Hash(algorithm, xofLen);
^
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 (/var/www/node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (/var/www/node_modules/webpack/lib/NormalModule.js:417:16)
at /var/www/node_modules/webpack/lib/NormalModule.js:452:10
at /var/www/node_modules/webpack/lib/NormalModule.js:323:13
at /var/www/node_modules/loader-runner/lib/LoaderRunner.js:367:11
at /var/www/node_modules/loader-runner/lib/LoaderRunner.js:233:18
at context.callback (/var/www/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
at /var/www/node_modules/babel-loader/lib/index.js:55:103 {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}我使用的是Node.js v17.3.0、NPM8.3.0和webpack 4.41.4。
发布于 2022-01-04 16:57:17
Node.js版本17已经切换到使用OpenSSL 3.0。他们建议
虽然OpenSSL 3.0API大部分应该与OpenSSL 1.1.1提供的API兼容,但由于对允许的算法和密钥大小的严格限制,我们确实预计会对生态系统产生一些影响。 如果您在使用
ERR_OSSL_EVP_UNSUPPORTED17的应用程序中遇到Node.js错误,很可能您正在使用的应用程序或模块试图使用默认情况下在OpenSSL 3.0中不允许的算法或密钥大小。添加了命令行选项--openssl-legacy-provider,作为这些严格限制的临时解决办法,将其还原给遗留提供程序。
这是Webpack版本5和6中的已解决,但是没有计划将此修复程序支持到版本4。
要将--openssl-legacy-provider标志传递给Node,可以在命令前面加上环境变量赋值:
NODE_OPTIONS=--openssl-legacy-provider npm run watch发布于 2022-10-30 12:47:08
对我(在Ubuntu22.04上)起作用的是将它添加到package.json文件中:
{
"scripts": {
"start": "react-scripts --openssl-legacy-provider start"
}
}我在本文中找到了Borislav的完整答案:修正-错误:0308010c:数字信封例程::不支持
https://stackoverflow.com/questions/70582072
复制相似问题