본문으로 건너뛰기

"storybook" 태그로 연결된 2개 게시물개의 게시물이 있습니다.

모든 태그 보기

· 약 2분

storybook에서 rnencryptedstorage is undefined 에러가 뜬다면, 모킹을 해주지 않아서 나는 에러이다.

  1. mock 파일을 만들어준다.
노트

네이밍에 주의한다. react-native.js 로 만들면 다른 에러를 야기할 수 있음

__mocks__/react-native-encrypted-storage.js
const RNEncryptedStorage = {
setItem: jest.fn(() => Promise.resolve()),
getItem: jest.fn(() => Promise.resolve('{ "foo": 1 }')),
removeItem: jest.fn(() => Promise.resolve()),
clear: jest.fn(() => Promise.resolve()),
};

export default RNEncryptedStorage;
.storybook/main.js
const path = require('path');
const webpack = require('webpack');
import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin';
import custom from '../webpack.config.js';

module.exports = {
stories: [
'../src/components/**/**/*.stories.@(js|jsx|ts|tsx|mdx)',
'../src/styles/*.stories.mdx',
],
addons: [
'@storybook/addon-links',
'@storybook/addon-essentials',
'@storybook/addon-interactions',
'@storybook/addon-controls',
'@storybook/addon-actions',
'@storybook/addon-mdx-gfm',
],
docs: {
autodocs: true,
},
features: {
interactionsDebugger: true,
},
webpackFinal: (config) => {
// ...
config.resolve.alias = {
...(config.resolve.alias || {}),
'react-native$': 'react-native-web',
'@storybook/react-native': '@storybook/react-webpack5',
// 이 코드를 추가한다.
'react-native-encrypted-storage':
'@react-native-async-storage/async-storage',
};

config.resolve.extensions = ['.web.js', '.tsx', '.ts', '.js'];

return {
...config,
module: {
...config.module,
rules: [...config.module.rules, ...custom.module.rules],
},
};
},
babel: (options) => {
options.plugins.push('babel-plugin-inline-react-svg');
return options;
},
framework: {
name: '@storybook/react-webpack5',
options: { fastRefresh: true },
},
};

· 약 9분

예전에는 react-native에서 storybook을 사용하면 디바이스 위에 띄워졌다.

이미지

const module = STORYBOOK_START ? require('../storybook').default : App;

이러한 느낌으로 스위치 하듯이 써야 했고, 스토리북과 앱을 동시에 보기 힘들기 때문에 불편함이 이만저만이 아니었다.

이러한 불편함을 해소하기 위해 약간의 꼼수로 웹뷰로 띄워서 보는 게 최선이었는데 그 과정이 꽤 복잡했다.

어느 날 이마저도 통하지 않는 문제가 발생하여, 버그를 픽스했으나 임시방편에 불과해서 스토리북 자체를 업그레이드 시도했다.

참고로 스토리북을 업그레이드 하면, node_modules에서 @storybook/react/bin/index.js 파일을 읽지 못해, 기존에 쓰던 웹뷰 꼼수를 쓸 수 없게 된다.