Node.js v18 にアップグレードしたら storybook のビルドが通らない問題への対応(error:0308010C:digital envelope routines::unsupported)
プロジェクトの 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 が関連するその他の処理でも発生するかもしれない。