コンテンツにスキップ
Vantage
日本語
Esc
navigateopen⌘Jpreview
このページの内容

環境変数

PUBLIC_ 接頭辞の env だけがクライアントに届く。シークレットはサーバーの env から読む。

Vantage は、環境変数をクライアントに漏らさないことを既定にしています。境界は接頭辞で決まります。

クライアントに届くのは PUBLIC_ だけ

PUBLIC_ で始まる変数だけがクライアントバンドルに入り、import.meta.env から読めます。

// クライアントコード
const analyticsId = import.meta.env.PUBLIC_ANALYTICS_ID;

クライアントで参照できるのは次だけです。

  • PUBLIC_*(あなたが定義した公開値)
  • MODE / DEV / PROD / SSR / BASE_URL(Vite の標準)

シークレットはサーバーの env から

API キーやトークンなどの秘密情報は、クライアントに出さずサーバーの ApiContext.env から 読みます。これらは接頭辞を付けません。

// server/api/report.ts
import type { ApiContext } from "@squadbase/vantage/server";

export async function GET({ env }: ApiContext) {
  const apiKey = env.SECRET_API_KEY; // クライアントには決して届かない
  // …外部サービスを呼ぶ
  return Response.json({ ok: true });
}

.env の例

# .env
PUBLIC_ANALYTICS_ID=UA-XXXX     # クライアントに届く
SECRET_API_KEY=sk_live_xxx      # サーバー専用(ApiContext.env)

デプロイで使う env

フロントとサーバーを別オリジンにデプロイするときは、次の env が関わります。

変数 役割
PUBLIC_API_BASE_URL クライアント(公開) クライアントが /api を呼ぶベースURL。--api-base-url でも上書き可
CORS_ORIGIN サーバー /api に対して許可するオリジン。未設定なら CORS 無効
CORS_CREDENTIALS サーバー true で資格情報(Cookie 等)を許可

使い方はビルドとデプロイで詳しく解説します。

次に読む

このページは役に立ちましたか?