2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【firebase,ts,vite】ReferenceError: process is not defined

Last updated at Posted at 2024-08-29

はじめに

firebaseの初期設定でエラーが出たのでその対処法を書いていきます。

問題

firebaseの初期設定を終え、サーバを立ち上げると画面が真っ白になりコンソールを確認すると以下のエラーが出る。

Uncaught ReferenceError: process is not defined

以下エラー発生時の.envとfirebase.ts

.env
REACT_APP_FIREBASE_API_KEY="XXXXX"
REACT_APP_FIREBASE_AUTH_DOMAIN="XXXXX"
REACT_APP_FIREBASE_PROJECT_ID="XXXXX"
REACT_APP_FIREBASE_STORAGE_BUCKET="XXXXX"
REACT_APP_FIREBASE_MESSAGING_SENDER_ID="XXXXX"
REACT_APP_FIREBASE_APP_ID="XXXXX"
REACT_APP_FIREBASE_MEASUREMENT_ID="XXXXX"
firebase.ts
import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";
import { getAuth } from "firebase/auth";


const firebaseConfig = initializeApp({
  apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
  authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
  projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
  storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
  appId: process.env.REACT_APP_FIREBASE_APP_ID,
  measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID
});


export const auth = getAuth(firebaseConfig);
export const db = getFirestore(firebaseConfig);

原因と解決策

環境変数の読み込み方がviteでは少し異なるため発生していたエラーでした。今回の場合だと以下の2点を修正する必要があります。supabaseを使う場合でも同じです。

  • 環境変数を読み込む際はprocess.envではなくimport.meta.envを使う
  • 環境変数名の前にVITEをつける

以下修正されたコードです。

.env
VITE_REACT_APP_FIREBASE_API_KEY="XXXXX"
VITE_REACT_APP_FIREBASE_AUTH_DOMAIN="XXXXX"
VITE_REACT_APP_FIREBASE_PROJECT_ID="XXXXX"
VITE_REACT_APP_FIREBASE_STORAGE_BUCKET="XXXXX"
VITE_REACT_APP_FIREBASE_MESSAGING_SENDER_ID="XXXXX"
VITE_REACT_APP_FIREBASE_APP_ID="XXXXX"
VITE_REACT_APP_FIREBASE_MEASUREMENT_ID="XXXXX"
firebase.ts
import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";
import { getAuth } from "firebase/auth";


const firebaseConfig = initializeApp({
  apiKey: import.meta.env.VITE_REACT_APP_FIREBASE_API_KEY,
  authDomain: import.meta.env.VITE_REACT_APP_FIREBASE_AUTH_DOMAIN,
  projectId: import.meta.env.VITE_REACT_APP_FIREBASE_PROJECT_ID,
  storageBucket: import.meta.env.VITE_REACT_APP_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: import.meta.env.VITE_REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
  appId: import.meta.env.VITE_REACT_APP_FIREBASE_APP_ID,
  measurementId: import.meta.env.VITE_REACT_APP_FIREBASE_MEASUREMENT_ID
});


export const auth = getAuth(firebaseConfig);
export const db = getFirestore(firebaseConfig);

これで正常に表示されるようになりました。

補足
もしgithub acitonsなどでデプロイしている場合はgithubに登録している環境変数名とcicdのymlファイル内の環境変数名も修正してあげないと環境変数が読み込まれないので注意です。

おわりに

vite環境でjestを使った際はimport.metaを使えなかった記憶があったのですが、今回はなぜかテストが通ったのでこのままで行こうと思います。

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?