react에서 vite로 env 설정해서 proxy 사용하기 (+CRA에서 proxy 설정)

2024. 3. 20. 14:00·기술/React.js

 

매번 CRA(create-react-app)으로만 프로젝트를 설정하다가 이번에는 vite로 진행해보았다.

CRA에서 proxy 설정

CRA는 proxy를 설정하기 위해 "http-proxy-middleware" 라이브러리를 별도로 설치하여 진행했다.

npm install http-proxy-middleware
//setupProxy.js
const { createProxyMiddleware } = require("http-proxy-middleware");

module.exports = function (app) {
  app.use(
    "/api",
    createProxyMiddleware({
      target: process.env.REACT_APP_SERVER,
      changeOrigin: true,
    })
  );
};

 

vite에서 proxy 설정

반면 vite는 자체적으로  proxy를 지원한다. 

https://ko.vitejs.dev/config/server-options.html#server-proxy

 

Vite

Vite, 차세대 프런트엔드 개발 툴

ko.vitejs.dev

vite.config.ts 파일에서 다음과 같이 설정해준다.

import react from '@vitejs/plugin-react'
import { defineConfig, loadEnv } from 'vite'

// https://vitejs.dev/config/
export default ({ mode }) => {
  // .env 파일에서 환경 변수 로드
  const env = loadEnv(mode, process.cwd(), '')

  return defineConfig({
    plugins: [react()],
    server: {
      proxy: {
        '/api': {
          target: env.VITE_API_URL, // 환경 변수 값 사용
          changeOrigin: true,
        },
      },
    },
    // 환경 변수를 사용하는 다른 설정들도 여기에 추가할 수 있습니다.
  })
}

target에 도메인을 바로 적어도 되지만 env에 있는 값을 가져오기 위해서 loadEnv를 import 해야된다.

( 이 부분에서 시간을 많이 뺏겼는데... config에서 env를 가져올때 import.meta.VITE_API_URL로는 조회가 안된다... )

 

mode는 지금 개발상태인지 배포상태인지를 체크해 env.development 또는 env.production 을 가져온다.

console.log를 찍어보며 어떤 데이터가 들어있는지 직접 확인하는게 좋다.

vite에서 env 확인하기

vite에서 env값을 사용하는 방법이 CRA랑 살짝 다르다.

CRA로 진행할때는 .env.dev 도 가능했는데 vite는 그렇게 하면 못 가져오고 .env.develoment 이렇게 적어줘야 한다. 

//VITE_API_URL ="주소" 이렇게 앞에 VITE라는 수식어가 붙어야 가져올 수 있다.

console.log(import.meta.env.VITE_SOME_KEY) // "123" //컴포넌트에서 가져올때

 

더 자세한 env 설정은 여기서 참고하자

https://ko.vitejs.dev/guide/env-and-mode.html#node-env-and-modes

 

Vite

Vite, 차세대 프런트엔드 개발 툴

ko.vitejs.dev

 

 

저작자표시 비영리 변경금지 (새창열림)

'기술 > React.js' 카테고리의 다른 글

[문서] 리액트 공식문서 톱아보기: 컴포넌트  (0) 2024.10.28
[문서] 리액트 공식문서 톱아보기: 기본 문법(빠른 시작 가이드)  (1) 2024.10.27
리액트에서 무한스크롤 구현하기(React-query, react-intersection-observer 사용)  (1) 2023.12.08
useState의 업데이트 방식에 따른 차이(함수형 업데이트)  (0) 2023.11.26
리액트에서 "불변성"이 중요한 이유  (0) 2023.11.26
'기술/React.js' 카테고리의 다른 글
  • [문서] 리액트 공식문서 톱아보기: 컴포넌트
  • [문서] 리액트 공식문서 톱아보기: 기본 문법(빠른 시작 가이드)
  • 리액트에서 무한스크롤 구현하기(React-query, react-intersection-observer 사용)
  • useState의 업데이트 방식에 따른 차이(함수형 업데이트)
빔네모
빔네모
console.log("빔네모")
  • 빔네모
    bimnemo("개발")
    빔네모
  • 전체
    오늘
    어제
    • 기록 (164)
      • 기술 (51)
        • JavaScript (8)
        • TypeScript (9)
        • React.js (14)
        • Next.js (0)
        • 라이브러리,도구 (5)
        • HTML,CSS (4)
        • CS (5)
        • BE (4)
        • 테스트 (2)
      • 개발 (99)
        • 프로젝트 (0)
        • 트러블슈팅 (5)
        • 알고리즘(코딩테스트) (94)
      • 정보 (4)
      • 취미 (10)
        • 독서기록 (10)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
빔네모
react에서 vite로 env 설정해서 proxy 사용하기 (+CRA에서 proxy 설정)
상단으로

티스토리툴바