Maison  >  Article  >  interface Web  >  Validez vos variables d'environnement avec Zod

Validez vos variables d'environnement avec Zod

WBOY
WBOYoriginal
2024-08-16 12:40:06843parcourir

Validate your environment variables with Zod

Zod est la bibliothèque de validation la plus connue de l'écosystème TypeScript. Avec Zod, vous créez un schéma et validez vos données selon le schéma. Observez le schéma ci-dessous :

import { z } from 'zod'

const UserSchema = z.object({
  name: z.string().min(1),
  age: z.number({ coerce: true }).min(18),
  email: z.string().email(),
})

Ce schéma peut être utilisé pour valider un objet comme suit :

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 est capable d'effectuer différents types de validations sur vos données, alors assurez-vous de lire la documentation pour plus de détails.

Validation des variables d'environnement

Nous pouvons utiliser Zod pour valider les valeurs présentes dans process.env et même les traiter avant d'utiliser les variables d'environnement dans notre application. Habituellement, j'aime créer un fichier environnement.ts, comme dans l'exemple ci-dessous :

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)

Ensuite, importez simplement la variable et utilisez-la dans toute mon application :

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)
  }
})

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn