💡Aha!

Node v17 이상의 Storybook 환경에서 발생하는 ERR_OSSL_EVP_UNSUPPORTED 오류

10% building 1/7 modules 6 active /Users/doda/workspace/doda/node_modules/@storybook/addon-links/preview.js-generated-config-entry.jsnode: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/doda/workspace/doda/node_modules/@storybook/builder-webpack4/node_modules/webpack/lib/util/createHash.js:135:53)
at NormalModule._initBuildHash (/Users/doda/workspace/doda/node_modules/@storybook/builder-webpack4/node_modules/webpack/lib/NormalModule.js:417:16)
at handleParseError (/Users/doda/workspace/doda/node_modules/@storybook/builder-webpack4/node_modules/webpack/lib/NormalModule.js:471:10)
at /Users/doda/workspace/doda/node_modules/@storybook/builder-webpack4/node_modules/webpack/lib/NormalModule.js:503:5
at /Users/doda/workspace/doda/node_modules/@storybook/builder-webpack4/node_modules/webpack/lib/NormalModule.js:358:12
at /Users/doda/workspace/doda/node_modules/@storybook/builder-webpack4/node_modules/loader-runner/lib/LoaderRunner.js:373:3
at iterateNormalLoaders (/Users/doda/workspace/doda/node_modules/@storybook/builder-webpack4/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
at /Users/doda/workspace/doda/node_modules/@storybook/builder-webpack4/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'
}
Node.js v18.12.0

에러가 발생한 스택을 확인해보면, @storybook/builder-webpack4 에서 발생하고 있는 것을 확인할 수 있다.

즉, webpack 4의 문제인 것으로 파악되어 해당 문제에 대해 이슈를 검색해보았다. 관련 이슈를 확인해보면 역시나 webpack 4 환경에서도 동일한 문제가 발생하고 있었다.

해결법

Webpack 5 사용

나는 이 방법을 사용했다. Next.js의 영향으로 Webpack 5를 주력으로 사용하고 있기 때문이다.

Storybook에서 Webpack 5를 사용하는 방법은 대략 다음과 같다.

1. storybook 관련 패키지를 설치

yarn add -D @storybook/builder-webpack5 @storybook/manager-webpack5

2. .storybook/main.js 설정 변경

module.exports = {
...
core: {
builder: 'webpack5'
}
...
};

Webpack 4를 사용하면서의 해결법

나는 Webpack 4에 미련이 없어서 그냥 버전을 올려버렸지만, Webpack 4를 부득이하게 사용해야 할 땐 어떻게 해야할까?에 대한 답변은 StackOverflow에서 명확하게 찾을 수 있었다.

다만 역시나 직접 시도해보진 않았으므로, 사용 시에 주의를 요한다.

ref

https://github.com/storybookjs/storybook/issues/16555

2024 Dohyun Jung.
Made with ☕️.