Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

267
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!