Zod を使用して環境変数を検証する

WBOY
リリース: 2024-08-16 12:40:06
オリジナル
869 人が閲覧しました

Validate your environment variables with Zod

Zod は、TypeScript エコシステムで最も有名な検証ライブラリです。 Zod を使用すると、スキーマ を作成し、そのスキーマに従ってデータを検証します。以下のスキーマを確認してください:

import { z } from 'zod'

const UserSchema = z.object({
  name: z.string().min(1),
  age: z.number({ coerce: true }).min(18),
  email: z.string().email(),
})
ログイン後にコピー

このスキーマは、次のようにオブジェクトを検証するために使用できます:

const data = {
  name: 'John Doe',
  age: 18,
  email: 'john@example.com',
}

// If there is a validation error, it throws an error
const validatedData = UserSchema.parse(data)

// If there is a validation error, it returns an error object for you to handle later
const safeValidatedData = UserSchema.safeParse(data)
// => { success: false; error: ZodError }
// => { success: true; data: 'billie' }
ログイン後にコピー

Zod はデータに対してさまざまなタイプの検証を実行できるため、詳細についてはドキュメントを必ずお読みください。

環境変数の検証

Zod を使用して process.env に存在する値を検証し、アプリケーションで環境変数を使用する前にそれらの値を処理することもできます。通常、私は以下の例のように、environment.ts ファイルを作成することを好みます。

import { z } from 'zod'

const environmentSchema = z.object({
  // Define the possible values for NODE_ENV, always leaving a default value:
  NODE_ENV: z.enum(['test', 'development', 'production']).default('production'),
  // Environment variables are always defined as strings. Here, convert the string to a number and set a default value:
  PORT: z.number({ coerce: true }).default(3000),
})

export const env = environmentSchema.parse(process.env)
ログイン後にコピー

次に、変数をインポートしてアプリケーション全体で使用します。

import Fastify from 'fastify'
import { env } from './environment.js'

const app = Fastify({ logger: true })
app.listen({ port: env.PORT }, (err) => {
  if (err) {
    app.log.error(err)
    process.exit(1)
  }
})
ログイン後にコピー

以上がZod を使用して環境変数を検証するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!