Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

AI가 번역한 다른 언어 보기

Sunrabbit

[Next.js] Runtime env injection

  • 작성 언어: 한국어
  • 기준국가: 모든 국가 country-flag

언어 선택

  • 한국어
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar

durumis AI가 요약한 글

  • Next.js에서 .env는 빌드 타임에 하드코딩되지만, 빌드 후 실행 시 환경 변수를 설정해야 할 경우가 많다.
  • 윈도우 사용자는 유닉스 기반의 스크립트를 사용할 수 없으므로, cross-env를 설치하여 윈도우와 유닉스 환경 모두에서 동작하는 스크립트를 작성해야 한다.
  • start 및 dev 커맨드에 cross-env를 활용하여 환경 변수를 설정하고, 스크립트를 간결하게 정리하면 빌드 후 환경 설정 문제를 해결할 수 있다.

Next.js에서 .env는 빌드 타이밍 때 하드코딩되어서 들어간다.


하지만 간혹 빌드 타이밍이 아닌, 빌드 된 이미지를 돌릴 때, env를 세팅하고자하는 많은 니즈들이 존재한다.

보통은 local, dev, qa, prod 이렇게 다루기 때문이다.


그렇다면 우린 그걸 어떻게 해낼 수 있을까?


대부분의 맥락은 아래의 글과 대동소이하다.



그러나, 위 글은 윈도우를 배척한다.

package.json의 스크립트에 유닉스 문법을 박아놓는걸로 알 수 있다.

{"start": "node ./utils/cli.js next-env -e ${APP_ENV:-dev} && next start"}

더러운 유닉스를 사용하지않는 청렴결백하며, 깔끔하고 배려심이 넘치는 윈도우 유저는 위 스크립트를 사용 못한다는 의미다.


그러므로 깔끔하고 배려 넘치는 윈도우 유저는 유닉스 유저를 배려하여 두 os 위에서 멀쩡하게 돌아가는 스크립트를 대신 넣어줘야한다.



해결방법은 간단하다.

해당 문법과 같은 일을 하는 스크립트를 박으면 된다.

npm i --save-dev cross-env

위와 같은 커맨드로 cross-env를 설치해준다.


그리고 위에서 언급했던 start 커맨드를 아래와 같이 수정하면 해결이다.

{"start": "cross-env-shell node ./utils/cli.js next-env -e $APP_ENV && next start"}

하지만 스크립트가 과도하게 길어서 보기 힘들뿐만아니라, dev 커맨드에도 붙여줘야한다.

{
    "dev": "npm run _env:-local && next dev",
    "dev:dev": "npm run _env:dev && next dev",
    "start": "npm run _env:-local && next start",
    "_env:-local": "cross-env-shell node ./utils/cli.js next-env -e $APP_ENV",
    "_env:dev": "node ./utils/cli.js next-env -e dev"
}

따라서 필자는 위와 같이 정리했다.

Sunrabbit
Sunrabbit
More than the best, I'll do my best
Sunrabbit
[Observability] 로그 수집기 Vector 도전기 DataDog에서 출시한 로그 수집 및 집계 툴인 Vector는 Rust로 작성되어 Otel보다 로그 변환 코드 작성이 편리하고, 선언적 관리가 가능하며 공식 문서가 잘 작성되어 있습니다. 하지만 최신화되지 않은 문서와 자료 부족이 단점으로 지적됩니다.

2024년 3월 9일

[React Hook] useState React에서 `useState`를 사용하면 컴포넌트 전체가 리렌더링되며, `useState`가 호출된 컴포넌트 내부에서 상태값이 변경될 때만 DOM이 업데이트됩니다. `useState`는 전역 객체에서 dispatcher를 가져와서 사용하며, 내부적으로 링크드 리스트를 활용하여 상태값을 유지합니다. `useState`는 컴포넌트가 마운트될 때 `mountState`를 호출하고, 리렌더링될 때 `updateState`와 `rerenderState`를 호

2024년 3월 14일

Rust 입문 가이드 러스트 프로그래밍 입문 가이드: 러스트 설치부터 기본 문법, 프로젝트 관리, 테스트, 최적화, 서드파티 라이브러리 활용까지 다루는 야매 가이드입니다.
곽경직
곽경직
곽경직
곽경직
곽경직

2024년 3월 30일

[이펙티브 자바] 아이템 5. 자원을 명시하지 말고 의존 객체 주입을 사용하라 클래스가 내부적으로 하나 이상의 자원에 의존하는 경우, 싱글턴과 정적 유틸리티 클래스 대신 의존 객체 주입을 사용하는 것이 좋습니다. 의존 객체 주입을 통해 클래스의 유연성, 재사용성, 테스트 용이성을 향상시킬 수 있습니다.
제이온
제이온
제이온
제이온

2024년 4월 28일

[이펙티브 자바] 아이템 4. 인스턴스화를 막으려거든 private 생성자를 사용하라 정적 메서드와 필드만을 가진 유틸리티 클래스는 인스턴스화를 막기 위해 생성자를 private으로 선언하는 것이 좋습니다. 이를 통해 컴파일러가 자동 생성하는 기본 생성자를 제어하고 클래스 외부에서의 인스턴스화를 방지할 수 있습니다.
제이온
제이온
제이온
제이온

2024년 4월 28일

두루미스에 첫 글을 쓰며 두루미스는 글을 작성하면 18개국 언어로 자동 번역해주는 플랫폼입니다. 굵게, 기울임, 밑줄, 목록, 인용구, 코드블럭, 링크 박스, 수평선 등 다양한 기능을 제공하며 Shift+Enter를 누르면 한 문단 안에서 줄 바꿈이 가능합니다.
이것저것 잡다한 이야기
이것저것 잡다한 이야기
이것저것 잡다한 이야기
이것저것 잡다한 이야기

2024년 4월 14일

AWS를 모두 한번에 설정, 생성해보자 (Terraform) Terraform을 사용하여 AWS 설정을 자동화하는 방법을 소개하며, AWS CLI 설치 및 IAM 사용자 설정, Terraform 설치 방법을 상세히 설명합니다.
Alien Story
Alien Story
Alien Story
Alien Story
Alien Story

2024년 5월 8일

글 작성과 관련한 FAQ 모음 durumis AI에서 글을 작성할 때 발생하는 다양한 질문과 답변을 모아 놓았습니다. 줄바꿈, 글씨체, 제목, 이미지 설명, 미리보기 글, 요약 글, 국가 선택, 글 번역 등 다양한 기능에 대한 설명이 포함되어 있습니다.
durumis official blog
durumis official blog
FAQ가 쓰인 그림
durumis official blog
durumis official blog

2024년 1월 25일