2022-12-12
Node.js を v18.x にバージョンアップして、Storybook をビルドしようと build-storybook
を実行すると、以下のようなエラーが出ました。
Error: error:0308010C:digital envelope routines::unsupported
このエラーを解消するために集めた情報と解消方法をまとめます。
はっきり特定したわけでは無いですが、Node.js のバージョンが上がったことで、OpenSSL のバージョンも v3 系になったことが原因かもしれません。
https://github.com/storybookjs/storybook/issues/18230#issuecomment-1239859295
補足として、Node.js 17 から OpenSSL3 に変更されました。
Node.js now includes OpenSSL 3.0,...
Node.jsのHTTPSなどのAPIで使われるOpenSSLのバージョンが1.1.0から3.0.0にアップデートされました。
また、Storybook はデフォルトで Webpack4 を使うようなので、それも関連しているかもしれません。
https://storybook.js.org/blog/storybook-for-webpack-5/
公式のドキュメントに書いてあります。
https://storybook.js.org/docs/react/builders/webpack#webpack-5
まず @storybook/manager-webpack5 と @storybook/builder-webpack5 の2つを追加します。
$ npm i -D @storybook/manager-webpack5 @storybook/builder-webpack5
次に .storybook/main.js
に以下の指定を追加します。
module.exports = {
+ core: {
+ builder: 'webpack5',
+ },
最後に build-storybook
を実行してエラーが出なければOKです。
解消後に見つけてしまったのですが、Node 17 でエラーになるよ、というドンピシャの Issue を発見しました。
Error when running build-storybook with Node 17 · Issue #16555 · storybookjs/storybook