티스토리 뷰
실행환경
- yarn berry
- nextjs v13
- react v18
- babel-loader v8
- babel-core v7
문제
Next.js를 사용하게 되면 next/babel에 의해서 import React from 'react';구문을 작성하지 않아도 자동으로 만들어준다. 그렇기 때문에 상단에 해당 구문을 적는 것이 불필요하나 스토리북을 통해 렌더링 하게 되는 경우 import React from 'react';가 없으면 React is not defiend 에러를 발생하게 된다.
해결 방법
해결 방법에 대해 여러가지 방면으로 생각해 보았다.
- import React from 'react'를 모두 작성해주기
- stroybook preset에 next/babel 추가해주기
결론부터 말하자면 1번의 경우에는 불필요한 작업을 추가하는 것이라 선택지에서 제외 하였고 2번의 방법으로 하려고 했으나 Module Build error가 발생하면서 충돌이 발생하였다.
- stack overflow를 통해 해결, 다음 링크를 통해 문제를 해결 할 수 있었다
https://stackoverflow.com/questions/74995855/storybook-canvas-referenceerror-react-is-not-defined예시코드
// main.js
"babel": async (options) =>
{
return {
...options, presets: [
...options.presets,
[
'@babel/preset-react', { runtime: 'automatic', },
'preset-react-jsx-transform'
],
],
};
},
babel/preset-react와 preset-react-jsx-transform이 import React from 'react'구문을 자동으로 만들어주는 것인 것 같다.
@babel/preset-react
- JSX를 변환하기 위한 Babel preset, React.createElement함수를 호출한다.
runtime: 'automatic'
- React.createElement없이 Jsx로 변환 할 수 있게 해주는 역할
- React 17버전 이후부터 일부 런타임으로 실행되기 때문에 이를 반영하기 위해 추가해준다.
- React의 Module 자동 import를 지원한다.preset-react-jsx-transform
React.createElement("div", null, "Hello, world!");
- @babele/preset-react, runtime:automatic구문만 추가할 경우 JSX로 변환이 제대로 되지 않을 수 있기 때문에 더 완벽히 변환 할 수 있게 추가해주는 preset이다. 실제로 storybook이 해당 preset없이 제대로 실행되지 않을 경우 추가해보자.
- react.createElement를 사용하지 않고 JSX문법을 변환해주는 역할, React 모듈의 자동 import를 수행해준다.
/* @jsxRuntime classic */ /* @jsx jsx */ jsx("div", null, "Hello, world!");
'사이드 프로젝트' 카테고리의 다른 글
[nextjs/eslint] next/babel parsing error 해결하기 (0) | 2023.07.17 |
---|---|
React context를 활용하여 modal state 관리하기 (0) | 2023.04.01 |
storybook에서 scss @import 구문을 인식 하지 못하는 문제 (0) | 2023.03.23 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 서버사이드 error handling
- React useMemo
- 백준 22862
- 에러핸들링
- nestjs 배포하기
- 서비스 디자인 패턴
- React useCallback
- 관심사 분리하기
- 미로탈출 명령어
- serverless 배포
- javascript
- 가장 긴 짝수 연속한 부분 수열
- suspense 장점
- node 버전 마이그레이션
- 선언적 UI
- 1600 파이썬
- storybook react is not defiend 해결
- react suspense
- 표현 가능한 이진트리
- 백준 1600번
- 자바스크립트
- node version yarn berry
- storybook scss이슈
- serverless nestjs
- nextjs errorboundary
- CSS
- storybook scss import
- nextjs 에러핸들링
- 불량 사용자 자바스크립트
- useCallback과 useMemo 사용
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함