Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

253
Vistas
¿Por qué el operador ternario por defecto es verdadero?

Tengo el siguiente bit de código:

 const production = process.env.PRODUCTION console.log(production) const corsOptions = { origin: production ? 'https://myproductionurl' : 'http://localhost:3000', credentials: true } console.log(corsOptions) app.use(cors(corsOptions))

Cuando ejecuto este código, el primer archivo console.log devuelve falso como se desea, sin embargo, la segunda declaración de console.log devuelve la URL de producción como si la variable fuera verdadera.

No estoy seguro de por qué esto es si alguien ve algo, ¡por favor hágamelo saber!

Además, si elimino el ternario y las URL para probar lo que está sucediendo, obtendré origin: false en corsOptions, ¡lo que me está desconcertando aún más!

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Las variables de entorno son siempre cadenas, a menos que no estén configuradas, en cuyo caso no estarán undefined .

Si está registrando false , entonces lo configuró en la cadena "false" , que es un valor verdadero.

Puedes probar eso explícitamente:

 production !== 'false' ? 'https://myproductionurl' : 'http://localhost:3000',

… aunque probablemente debería escribir una prueba que sea más robusta que esa, como:

 const isProduction = () => { const env = process.env.PRODUCTION; if (!env) return false; if (env === "false") return false; return true; }

y entonces

 isProduction() ? 'https://myproductionurl' : 'http://localhost:3000',
about 4 years ago · Juan Pablo Isaza Denunciar

0

Actualiza tu lógica ternaria

 const env = process.env.PRODUCTION console.log(env) const corsOptions = { origin: env == "production" ? 'https://myproductionurl' : 'http://localhost:3000', credentials: true } console.log(corsOptions) app.use(cors(corsOptions))
about 4 years ago · Juan Pablo Isaza Denunciar

0

Porque todas las variables de entorno son cadenas. Y la cadena que es false no tiene un valor booleano de false , por lo tanto, el ? solo vea la cadena que contiene algunos caracteres => por lo tanto, resolviéndolo como verdadero.

 const production = 'false' const productionBool = false console.log(production) const corsOptions = { origin: production ? 'https://myproductionurl' : 'http://localhost:3000', originBool: productionBool ? 'https://myproductionurl' : 'http://localhost:3000', credentials: true } console.log(corsOptions)

Puede resolverlo, es decir, mediante (String(production).toLowerCase() === 'true')

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda