inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

웹 게임을 만들며 배우는 React

2-9. 웹팩 데브 서버와 핫 리로딩

Cannot find package 'react-refesh' 이런 에러 뜨시는 분들 보세요.

149

해도디

작성한 질문수 4

0

한시간 헤매다 다행히 해결책 찾았습니다.

기존 강좌와 @pmmmwh/react-refresh-webpack-plugin 해당 플러그인 버전 차이 때문에 발생한 에러 같습니다.

 

webpack.config.js 파일을 아래와 같이 전체적으로 수정해주세요.

const path = require('path');
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
const webpack = require('webpack');

const isDevelopment = process.env.NODE_ENV !== 'production';

module.exports = {
  name: 'word-relay-dev',
  mode: 'development',
  devtool: 'eval',
  resolve: {
    extensions: ['.js', '.jsx'],
  },

  entry: {
    app: './client',
  }, // 입력

  mode: isDevelopment ? 'development' : 'production',

  module: {
    rules: [{
      test: /\.jsx?$/,
      exclude: /node_modules/,
      use: [
        {
          loader: require.resolve('babel-loader'),
          options: {
            presets: [
              ['@babel/preset-env', {
                targets: {
                  browsers: ['> 5% in KR'],
                },
                debug: true,
              }],
              '@babel/preset-react',
            ],
            plugins: [
              isDevelopment && require.resolve('@babel/plugin-proposal-class-properties'),
              isDevelopment && require.resolve('react-refresh/babel'),
            ].filter(Boolean),
          },
        },
      ],
    }],
  },

  plugins: [
    isDevelopment && new webpack.HotModuleReplacementPlugin(),
    isDevelopment && new ReactRefreshWebpackPlugin(),
  ].filter(Boolean),

  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'app.js',
    publicPath: '/dist/', 
  }, // 출력

  devServer: { // webpack 4버전 이상(5버전 포함)도 아래처럼 수정 필요
    devMiddleware: { publicPath: '/dist' },
    static: { directory: path.resolve(__dirname) },
    hot: true,
  },
};

 

공식문서는 아래 링크를 참고하세요.

https://www.npmjs.com/package/@pmmmwh/react-refresh-webpack-plugin/v/0.5.0-rc.4

react

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

해도디님이 “Cannot find package ‘react-refresh’” 오류를 해결하는 방법을 공유해주셨네요. 이 문제는 웹팩과 관련된 설정에서 발생하는 일반적인 문제로, 특히 @pmmmwh/react-refresh-webpack-plugin의 버전 불일치가 원인일 수 있습니다. 이 플러그인은 개발 환경에서 핫 리로딩을 지원하기 위해 사용되며, webpack의 설정 파일을 최신 상태로 업데이트하는 것이 중요합니다.

해결 방법은 webpack.config.js 파일을 수정하는 것입니다. 수정된 구성에서는 isDevelopment 플래그를 사용하여 환경에 따라 플러그인과 설정을 적절히 적용하고 있습니다.

또한, babel-loader와 관련된 설정에서 @babel/plugin-proposal-class-properties를 추가하고, 개발 환경에서만 react-refresh/babel 플러그인을 사용하도록 설정하였습니다. 이는 트랜스파일링 과정을 통해 React 컴포넌트의 핫 리로드가 가능하도록 합니다.

추가적으로 공식 문서를 참고하면, 특정 버전에 대한 더 많은 정보를 얻을 수 있습니다. @pmmmwh/react-refresh-webpack-plugin 공식 문서를 확인하시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

npm run dev 실행 시 포트가 안뜨는 문제

0

202

2

timeouts.current를 useEffect 의 input값으로 넣었을때

0

85

2

렌더링 테스트 코드 (Hooks)

0

80

1

해당 에러 뜨는 분들 보세요. "Uncaught TypeError: ReactDom.createRoot is not a function"

1

190

1

강사님 레포지토리에서 코드 복사 시 master 브랜치 말고 react18 브랜치꺼 복붙하세요ㅠㅠ

0

95

1

useMemo와 useCallback 사용 시기

0

205

2

onRightClickTd가 작동을 하지 않습니다.

0

226

1

action.type 불러오는 방식

0

222

2

onClickRedo 질문

0

172

1

const Try = require(./Try) 빨간줄

0

248

1

npx webpack 실행시

0

313

1

지뢰찾기 강좌에서 빈칸들 한번에 열기 파트에서 여쭤보고싶은부분이 있어서 글 올립니다.

0

234

1

강좌에서 다루지 않은 기능들은 어떻게 학습하면 좋을까요?

0

311

1

react devtool이 enable 않됩니다.

0

530

2

React 랜더링이 되지 않습니다.

0

409

2

비동기로 동작하는 setState에 대해서

0

331

1

npm run dev 할 때 에러발생

0

478

2

memo, PureComponenet, shouldComponentUpdate 관련 질문

0

205

1

devMiddleware의 필요성

0

352

1

리액트에서 화살표 함수를 사용해야하는 이유

0

931

2

path.join관련질문

0

280

2

2-9. 웹팩 데브 서버와 핫 리로딩 설치과정 시 에러

0

371

1

next.js 에서 이와 비슷한 예제를 돌리고있는데 react랑 달라서 질문 드립니

1

488

4

useInterval.js 커스텀 훅에서, 왜 첫번째 useEffect를 계속 반복해야할까요?

0

462

2