3
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?

Vite + Jest|環境変数 import.meta.env を使う設定方法

Last updated at Posted at 2025-02-28

Vite 環境でテストするためにJestを実行すると、process.envundefined になる場合があります
これは、Vite では import.meta.env を使用する仕様になっているため、Jest で import.meta.env を直接利用できないことが原因です。
Vite でも Jest でも process.env を統一して使用する方法を紹介します。

前提条件

  • Vite + React 環境 で開発を行っている
  • Jest + React Testing Library を使用してテストを実行
  • 環境変数 (import.meta.env) を .env に定義している
  • Supabase などの API キーを .env で管理している
  • テスト時にも環境変数を適用し、正しく動作するか検証したい

process.env が使えない原因

  • Vite は import.meta.env を推奨しており、デフォルトでは process.env をサポートしていません
  • Jest は import.meta.env をサポートしていないため、undefined になってしまいます
  • 環境変数を統一するには、Vite の設定を変更する必要があります

Vite の設定

vite.config.jsdefine を追加し、process.env を Vite でも利用できるようにします。

vite.config.js

import { defineConfig } from "vite";
import dotenv from "dotenv";

// `.env` を読み込む
dotenv.config();

export default defineConfig({
  define: {
    "process.env": process.env, // Vite でも `process.env` を使えるようにする
  },
});

.env

VITE_SUPABASE_URL=https://your-supabase-url
VITE_SUPABASE_ANON_KEY=your-anon-key

ポイント

  • dotenv.config();.envprocess.env に適用
  • define: { "process.env": process.env } で Vite 内でも process.env を使えるようにする
  • .env の変数は VITE_ をつける必要がある

Supabase クライアントの設定

supabaseClient.js では process.env を使用するように修正します。

supabaseClient.js

import { createClient } from '@supabase/supabase-js';

export const supabase = createClient(
    process.env.VITE_SUPABASE_URL,
    process.env.VITE_SUPABASE_ANON_KEY
);

Jest で .env.test を読み込む

Jest のテスト環境用に .env.test を作成します。

.env.test

VITE_SUPABASE_URL=https://your-test-supabase-url
VITE_SUPABASE_ANON_KEY=your-test-anon-key

jest.setup.js

import dotenv from "dotenv";
dotenv.config({ path: ".env.test" });

動作確認

  • Vite 開発環境で console.log(process.env.VITE_SUPABASE_URL); を実行し、値が取得できることを確認
  • Jest 実行時も console.log(process.env.VITE_SUPABASE_URL); を出力し、正しく読み込まれているか確認

まとめ

  • Vite では import.meta.env を使うが、Jest では process.env を使用する
  • Vite の define を設定することで、process.env を統一できる
  • .env.env.test を分けることで、開発環境とテスト環境を分離できる

これで Vite でも Jest でも process.env を統一して使用できます。

3
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
3
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?