プロジェクトの Node.js v18 にアップグレードした。 すると、storybook のビルドが通らなくなってしまった。
$ npm run storybook 「wdm」: wait until bundle finished: node:internal/crypto/hash:71 this[kHandle] = new _Hash(algorithm, xofLen); ^ Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:71:19) at Object.createHash (node:crypto:133:10) at module.exports (/Users/.../node_modules/webpack/lib/util/createHash.js:135:53) at NormalModule._initBuildHash (/Users/.../node_modules/webpack/lib/NormalModule.js:417:16) at handleParseError (/Users/.../node_modules/webpack/lib/NormalModule.js:471:10) at /Users/.../node_modules/webpack/lib/NormalModule.js:503:5 at /Users/.../node_modules/webpack/lib/NormalModule.js:358:12 at /Users/.../node_modules/loader-runner/lib/LoaderRunner.js:373:3 at iterateNormalLoaders (/Users/.../node_modules/loader-runner/lib/LoaderRunner.js:214:10) at Array.<anonymous> (/Users/.../node_modules/loader-runner/lib/LoaderRunner.js:205:4) { opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ], library: 'digital envelope routines', reason: 'unsupported', code: 'ERR_OSSL_EVP_UNSUPPORTED' }
以下のように npm script に NODE_OPTIONS=--openssl-legacy-provider
を付与してエラーを回避した。
"scripts": { "storybook": "NODE_OPTIONS=--openssl-legacy-provider start-storybook -p 6006" }
あくまで暫定対応という感じですが…。
このエラーは storybook に限らず、Node.js が関連するその他の処理でも発生するかもしれない。