Webpack ビルド プロセスが突然壊れ、次のエラーが発生するという問題が発生しています...
<s> [webpack.Progress] 10% building 0/1 entries 0/0 dependencies 0/0 modules
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 BulkUpdateDecorator.hashFactory (/app/node_modules/webpack/lib/util/createHash.js:155:18)
at BulkUpdateDecorator.update (/app/node_modules/webpack/lib/util/createHash.js:46:50)
at OriginalSource.updateHash (/app/node_modules/webpack-sources/lib/OriginalSource.js:131:8)
at NormalModule._initBuildHash (/app/node_modules/webpack/lib/NormalModule.js:888:17)
at handleParseResult (/app/node_modules/webpack/lib/NormalModule.js:954:10)
at /app/node_modules/webpack/lib/NormalModule.js:1048:4
at processResult (/app/node_modules/webpack/lib/NormalModule.js:763:11)
at /app/node_modules/webpack/lib/NormalModule.js:827:5 {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
command terminated with exit code 1
グーグルで検索してみましたERR_OSSL_EVP_UNSUPPORTED webpack
が、ほとんど役に立つ結果は得られませんでしたが、MD4を使用する際の問題点が明らかになりました。オープンSSL(どうやら非推奨のようですが) ハッシュを生成します。
webpack.config.js コードは次のとおりです。
const path = require('path');
const webpack = require('webpack');
/*
* SplitChunksPlugin is enabled by default and replaced
* deprecated CommonsChunkPlugin. It automatically identifies modules which
* should be splitted of chunk by heuristics using module duplication count and
* module category (i. e. node_modules). And splits the chunks…
*
* It is safe to remove "splitChunks" from the generated configuration
* and was added as an educational example.
*
* https://webpack.js.org/plugins/split-chunks-plugin/
*
*/
/*
* We've enabled TerserPlugin for you! This minifies your app
* in order to load faster and run less javascript.
*
* https://github.com/webpack-contrib/terser-webpack-plugin
*
*/
const TerserPlugin = require('terser-webpack-plugin');
module.exports = {
mode: 'development',
entry: './src/js/scripts.js',
output: {
path: path.resolve(__dirname, 'js'),
filename: 'scripts.js'
},
devtool: 'source-map',
plugins: [new webpack.ProgressPlugin()],
module: {
rules: []
},
optimization: {
minimizer: [new TerserPlugin()],
splitChunks: {
cacheGroups: {
vendors: {
priority: -10,
test: /[\\/]node_modules[\\/]/
}
},
chunks: 'async',
minChunks: 1,
minSize: 30000,
name: 'true'
}
}
};
Webpack で使用されるハッシュ アルゴリズムを別のものに変更するにはどうすればよいですか?
ベストアンサー1
以下の方法で修正できました:
export NODE_OPTIONS=--openssl-legacy-provider
Node.js v17.0.0に対する sachaw のコメント- 開発モードでプロジェクトを開始するとエラーが発生する #30078
しかし、彼らはそれを修正したと言います。ijjk の Node.js v17.0.0 へのコメント- 開発モードでプロジェクトを開始するとエラーが発生する #30078:
こんにちは。これは Next.js の v11.1.3-canary.89 で更新されました。更新して試してみてください。
私の場合、上記の注釈を付けた場合にのみ機能しました。
npm run start
また、は では機能します-openssl-legacy-provider
が、npm run dev
では機能しないことも指摘しておきます。
パッチがあるようです:Node.js 17: デジタル エンベロープ ルーチン::サポートされていません #14532
私は個人的に にダウングレードしました16-alpine
。