デフォルトの IntelliJ IDEA React プロジェクトを作成し、次の結果を得ました。
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 (/Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (/Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/NormalModule.js:417:16)
at handleParseError (/Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/NormalModule.js:471:10)
at /Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/NormalModule.js:503:5
at /Users/user/Programming Documents/WebServer/untitled/node_modules/webpack/lib/NormalModule.js:358:12
at /Users/user/Programming Documents/WebServer/untitled/node_modules/loader-runner/lib/LoaderRunner.js:373:3
at iterateNormalLoaders (/Users/user/Programming Documents/WebServer/untitled/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
at iterateNormalLoaders (/Users/user/Programming Documents/WebServer/untitled/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
/Users/user/Programming Documents/WebServer/untitled/node_modules/react-scripts/scripts/start.js:19
throw err;
^
最近の問題のようです -webpackは4日前にこれに遭遇し、まだ取り組んでいます。
ベストアンサー1
エラーは、古いバージョンの SSL に依存していることから発生するため、適切なオプションが 2 つと、疑わしいオプションが 2 つあります。
1. 依存関係を再インストールしてみる
- node_modules フォルダを削除して、 を再実行します
npm install
。依存関係が、インストールされている Node のバージョンに対してコンパイルすることに依存している場合は、これですぐに問題が解決する可能性があります。これは機能する可能性が最も低い解決策ですが、ユーザー側で「実際の」作業を行わなくても問題が解決する可能性があるため、試してみる価値は常にあります。
2. 依存関係を更新する
- この問題のある依存関係のほとんどすべてには、代わりにインストールできる新しいバージョンが用意されています。Node 18 が Node の LTS バージョンになった後に依存関係のどのバージョンに対応するかを確認し、依存関係をそのバージョンにアップグレードします。
これが本当に唯一の適切な解決策です。依存関係を更新してください。Node.js 自体と同様に、依存関係によってプロジェクトが攻撃や悪用に対して脆弱になる可能性があるためです。
3. Node.js v16 にダウングレードします。
- Node 自体をダウングレードして、古くて安全でないバージョンの LibSSL を使用するバージョンを使用することもできます。もちろん、安全でない、潜在的に悪用される可能性のあるコードを実行するという問題は「解決」されませんが、少なくともコードは実行されます。
(これを行うには、公式Nodeインストーラーまたは、次のようなものを使用することもできますnvm
Windowsの場合は、nvm-windows
。
これは明らかに悪い考えです。次の例も同様です。
4. NodeにレガシーOpenSSLプロバイダーを使用するように指示する
Unix 系 (Linux、macOS、Git bash など) の場合:
export NODE_OPTIONS=--openssl-legacy-provider
Windows コマンド プロンプトの場合:
set NODE_OPTIONS=--openssl-legacy-provider
PowerShell の場合:
$env:NODE_OPTIONS = "--openssl-legacy-provider"
Node 18 がアクティブ LTS になったばかりの頃は、オプション 1 と 2 は実際には利用できませんでしたが、この答えをまだ見つけている人にとっては、3 と 4 はもはや決して真剣なオプションとは見なされません。