똑같은 삽질은 2번 하지 말자

Nuxt에서 @nuxjs/dotenv 없이 .env 파일 환경변수 셋팅하기 본문

Vue

Nuxt에서 @nuxjs/dotenv 없이 .env 파일 환경변수 셋팅하기

곽빵 2022. 1. 9. 15:35

개요

@nuxtjs/dotenv 를 써도 .env 파일의 환경변수가 제대로 설정이 안되서 @nuxjs/dotenv 없이 .env파일을 읽어들여보자

 

같은 문제를 겪은듯한 분의 글 ↓

https://velog.io/@katanazero86/nuxt.js-nuxt-dotenv.env

 

[nuxt.js] nuxt dotenv(.env)

닷엔브 개발환경별로 사용하고싶다.

velog.io

 

 

.env (.env_sample파일을 밑의 형태로 만들어 어떤 환경변수가 있는지 팀원들간에 공유한다.)

apiKey=
authDomain=
projectId=
storageBucket=
messagingSenderId=
appId=
measurementId=

 

nuxt.config.js

nuxt config의 env 속성을 이용해서 전역에서 이 nuxt.config.js의 env(환경변수)를 참조할 수 있게 만들수 있다.

require('dotenv').config()

export default {
  // ...생략

  env: {
    FIREBASE_APIKEY: process.env.apiKey,
    FIREBASE_AUTHDOMAIN: process.env.authDomain,
    FIREBASE_PROJECTID: process.env.projectId,
    FIREBASE_STORAGEBUCKET: process.env.storageBucket,
    FIREBASE_MESSAGINGSENDERID: process.env.messagingSenderId,
    FIREBASE_APPID: process.env.appId,
    FIREBASE_MEASURMENTID: process.env.measurementId,
  },
}

 

firebase.ts

if (!firebase.apps.length) {
  firebase.initializeApp({
    apiKey: process.env.FIREBASE_APIKEY,
    authDomain: process.env.FIREBASE_AUTHDOMAIN,
    projectId: process.env.FIREBASE_PROJECTID,
    storageBucket: process.env.FIREBASE_STORAGEBUCKET,
    messagingSenderId: process.env.FIREBASE_MESSAGINGSENDERID,
    appId: process.env.FIREBASE_APPID,
    measurementId: process.env.FIREBASE_MEASURMENTID,
  })
}

 

dev/prod 나누기

해보진 않았지만, 이런식으로 하면 읽어들이는 .env파일을 자유자재로 바꿀 수 있을꺼같다.

const envPath = `config/.env.${process.env.ENV || 'local'}`
require('dotenv').config({ path: envPath })
Comments