我有一個最近安裝在新設備上的現有專案。
這是一個 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、npm 版本 8.3.0 和 webpack 4.41.4。
uj5u.com熱心網友回復:
Node.js 版本 17 已切換到使用 OpenSSL 3.0。他們建議:
雖然 OpenSSL 3.0 API 應該與 OpenSSL 1.1.1 提供的 API 大部分兼容,但由于對允許的演算法和密鑰大小的嚴格限制,我們確實預計會對生態系統產生一些影響。
如果您
ERR_OSSL_EVP_UNSUPPORTED在使用 Node.js 17 的應用程式中遇到錯誤,很可能是您的應用程式或您正在使用的模塊嘗試使用 OpenSSL 3.0 默認不再允許的演算法或密鑰大小。--openssl-legacy-provider已添加命令列選項 ,以恢復到舊提供程式,作為這些收緊限制的臨時解決方法。
這已在 Webpack 版本 5 和 6 中得到解決,但沒有計劃將此修復程式向后移植到版本 4。
要將--openssl-legacy-provider標志傳遞給 Node,您可以在命令前加上環境變數賦值:
NODE_OPTIONS=--openssl-legacy-provider npm run watch
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/403658.html
標籤:
