Skip to content

πŸ› [Bug] λΉŒλ“œ ν™˜κ²½μ—μ„œ ν™˜κ²½λ³€μˆ˜ process.env.NEXT_PUBLIC_API_URL이 undefined둜 ν‰κ°€λ˜λŠ” 문제 ν•΄κ²°Β #331

@wynter24

Description

@wynter24

πŸ“„ λ¬Έμ œμƒν™©

문제 #330

문제 원인

NEXT_PUBLIC_API_URL이 ν΄λΌμ΄μ–ΈνŠΈμ—μ„œλŠ” 잘 λ™μž‘ν•˜μ§€λ§Œ, μ„œλ²„ μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” μ œλŒ€λ‘œ λ™μž‘ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. μ΄λŠ” ν™˜κ²½ λ³€μˆ˜κ°€ λΉŒλ“œ μ‹œμ μ— μ œλŒ€λ‘œ μ„€μ •λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

  • Next.jsλŠ” λΉŒλ“œ μ‹œμ μ— process.env 값을 읽어 κ³ μ •λœ 결과물을 μƒμ„±ν•©λ‹ˆλ‹€.
  • CI/CD μ›Œν¬ν”Œλ‘œμš°μ—μ„œ ν™˜κ²½ λ³€μˆ˜λ₯Ό λΉŒλ“œ 전에 μ „λ‹¬ν•˜μ§€ μ•Šμ•„, μ„œλ²„ μ»΄ν¬λ„ŒνŠΈμ—μ„œ undefined 값을 μ°Έμ‘°ν•˜λ©΄μ„œ μ—λŸ¬κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

βœ”οΈ μž¬ν˜„ κ°€λŠ₯ μ—¬λΆ€

  • 예
  • μ•„λ‹ˆμ˜€

πŸ’» μ½”λ“œ

문제 ν•΄κ²°

GitHub Secretsλ₯Ό μ‚¬μš©ν•˜μ—¬ ν™˜κ²½ λ³€μˆ˜λ₯Ό CI/CD ν™˜κ²½μ— μ „λ‹¬ν•˜μ—¬ ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

jobs:
  ci:
    steps:
    - name: Set environment variables
      run: echo "NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL }}" >> .env
    - name: Build Next.js app
       env:
         NEXT_PUBLIC_API_URL: ${{ secrets.NEXT_PUBLIC_API_URL }}
       run: npm run build

문제 ν•΄κ²° κ³Όμ •

1. GitHub Secrets 등둝

ν™˜κ²½ λ³€μˆ˜λ₯Ό μ•ˆμ „ν•˜κ²Œ κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ GitHub Secrets에 NEXT_PUBLIC_API_URL 값을 λ“±λ‘ν–ˆμŠ΅λ‹ˆλ‹€.

  • μœ„μΉ˜: ν”„λ‘œμ νŠΈ Repo > Settings > Secrets and variables > Actions
  • λ“±λ‘λœ 값은 GitHub Actions μ›Œν¬ν”Œλ‘œμš°μ—μ„œ μ°Έμ‘°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Image

2. ν™˜κ²½ λ³€μˆ˜ 전달 μ„€μ •

GitHub Actions μ›Œν¬ν”Œλ‘œμš°μ—μ„œ λΉŒλ“œ μ‹œμ μ— ν™˜κ²½ λ³€μˆ˜λ₯Ό μ „λ‹¬ν•˜λ„λ‘ μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€.

  1. ν™˜κ²½ λ³€μˆ˜ 파일 생성

    GitHub Actionsμ—μ„œ Secrets 값을 가져와 CI/CD ν™˜κ²½μ—μ„œ .env νŒŒμΌμ„ μƒμ„±ν•˜κ³  NEXT_PUBLIC_API_URL 값을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

    - name: Set environment variables
      run: echo "NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL }}" >> .env

    πŸ”μ΄ .env νŒŒμΌμ€ CI/CD ν™˜κ²½ λ‚΄μ—μ„œλ§Œ μ‚¬μš©λ˜λ©°, 둜컬의 .envμ™€λŠ” λ³„κ°œμž…λ‹ˆλ‹€. λΉŒλ“œ 및 μ„œλ²„ μ‹€ν–‰ μ‹œ ν™˜κ²½ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ 보μž₯ν•©λ‹ˆλ‹€.

  2. λΉŒλ“œ μ‹œ ν™˜κ²½ λ³€μˆ˜ 전달

    Next.jsλŠ” λΉŒλ“œ μ‹œμ μ— ν™˜κ²½ λ³€μˆ˜λ₯Ό 읽어야 ν•˜κΈ° λ•Œλ¬Έμ—, ν™˜κ²½ λ³€μˆ˜λ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ „λ‹¬ν–ˆμŠ΅λ‹ˆλ‹€.

    - name: Build Next.js app
      env:
        NEXT_PUBLIC_API_URL: ${{ secrets.NEXT_PUBLIC_API_URL }}
      run: npm run build

    πŸ”Next.jsλŠ” λΉŒλ“œ μ‹œμ μ— process.env 값을 κ³ μ •λœ κ°’μœΌλ‘œ 읽기 λ•Œλ¬Έμ—, ν™˜κ²½ λ³€μˆ˜λ₯Ό λΉŒλ“œ λ‹¨κ³„μ—μ„œ μ£Όμž…ν•΄μ•Ό μ˜¬λ°”λ₯Έ 결과물이 μƒμ„±λœλ‹€.

πŸ™‹πŸ» μ°Έκ³  자료

πŸ€”μΆ”κ°€μ μœΌλ‘œ 이해해야 ν•  점

  • λΉŒλ“œμ™€ λŸ°νƒ€μž„μ˜ 차이
    • λΉŒλ“œ μ‹œμ : Next.jsλŠ” ν™˜κ²½ λ³€μˆ˜λ₯Ό 읽어 정적 HTMLκ³Ό JSλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
    • λŸ°νƒ€μž„: μ„œλ²„ μ‹€ν–‰ 쀑에도 process.env에 μ ‘κ·Ό κ°€λŠ₯ν•˜μ§€λ§Œ, λΉŒλ“œ μ‹œ ν™˜κ²½ λ³€μˆ˜κ°€ λˆ„λ½λ˜λ©΄ λŸ°νƒ€μž„μ—μ„œλ„ λ™μž‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • .env와 둜컬 μ„€μ •
    • CI/CDμ—μ„œ μƒμ„±λœ .env νŒŒμΌμ€ 둜컬의 .env와 λ³„κ°œμž…λ‹ˆλ‹€.
    • 둜컬 ν™˜κ²½μ—μ„œλŠ” .env.local νŒŒμΌμ„ μ‚¬μš©ν•΄ λ™μΌν•œ 섀정을 μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Metadata

Metadata

Assignees

Labels

πŸ› Bug버그λ₯Ό μˆ˜μ •ν•˜κΈ° μœ„ν•œ μ΄μŠˆλ‚˜ PR

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions